windows里常见维权手法都已经老生常谈了,如果要聊rootkit之流,那又涉及到虚拟化 内核这些晦涩难懂很吃耐心的东西,还有加上代码 PE这些一篇文章很容易就写的过于长篇大论了,那么阅读量就会像下面这篇一样扑街,区区几百阅读让人失望
从linux内核初窥LKM(抛砖引玉之rootkit隐藏进程 or tcp连接原理) (qq.com)
但是hw和安服面试经常问这些东西,而公众号有很大部分读者都是学生,会面临hw or 就业,而这个公众号的初心就是为了传播我们 所闻之道,所攻之术,既然读者有需求,那麋鹿就聊聊维权和排查吧,希望能帮读书的朋友们拿到一个不错的薪资。
所以这次我们不直接聊排查应急手法,而是先聊维权手法和原理,然后抛砖引玉到排查
本文目录
先聊影子用户
本次实验环境为win10
如何创建一个影子用户
1.创建一个名为test的隐藏用户并加入管理员组
net user test$ 123456 /add
net localgroup administrators test$ /add
此时虽然用net user无法查看到该用户,但在控制面板里可以看到
2.所以接下来需要修改注册表来隐藏
打开HKEY_LOCAL_MACHINE\SAM\SAM,修改SAM权限为完全控制权限
如果现在重启,登录的时候可以清楚的看到test账号还未隐藏
3.在注册表里可以看到此时user和names里面是四个用户
-
1F4
通常对应于Administrator
账户。 -
1F5
通常对应于Guest
账户。 -
1F7
可能对应于 Default`账户。 -
11用户的rid值为1000,对应十六进制为3E8(可以在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList里看到rid。然后换算为16进制)
将Administrator用户(1FA)对应项的F数据值复制到test$(3EA)用户对应项的F数据值
将test$和000003EA导出,分别命名为test.reg和3EA.reg
删除test$用户,将test.reg和3EA.reg导入注册表
net user test$ /del
regedit /s test.reg
regedit /s 3EA.reg
再次net users查看用户,没有test,计算机管理也没有test了,只有注册表里可以看到
如何排查
通过上面的流程可以很清楚的明白是创建影子用户的原理和操作,所以排查只需要看注册表里下面两个框里的用户量是否和net user的量嫩对应上
如下,注册表里五个,net user四个,所以存在影子用户
再聊logon script
原理
REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\WINDOWS\system32\cmd.exe"
在启动时,logon scripts的优先级高于杀毒软件,可以绕过杀软
效果
重启以后自动运行cmd
这里只是演示cmd,实际中把路径换成马子的路径就行了
排查
上面命令里很清楚很容易理解
就是在注册表(位置为HKEY_CURRENT_USER\Environmen)里新加一个UserInitMprLogonScript的项,数据为C:\WINDOWS\system32\cmd.exe
所以排查的办法也显而易见,就是查看注册表(HKEY_CURRENT_USER\Environmen)里UserInitMprLogonScript的值
自启动
方法一:
注册表位置
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
方法二
注册表位置
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
排查也显而易见,看对应的注册表就行了
计划任务
schtasks /Create /tn 123 /tr C:\WINDOWS\system32\cmd.exe /sc minute /mo 1
一分钟执行一次
排查
win+r运行taskschd.msc
服务自启动
可以exe可以dll
sc create test binpath= 路径
注册为服务
sc config test start= auto
设置为自动启动
net start test
启动
排查
services.msc
再聊聊其他排查手法
外连ip
上一篇文章讲过了
只会netstat?最全应急排查网络连接思路,不学一下吗? (qq.com)
日志
win+r eventvwr
主要看系统日志和安全
可以重点查看以下日志id
4624,成功登陆
4625,登陆失败
4634,注销成功
4672,授予了特殊权限(比如管理员)
4698,已创建计划任务
4699,计划任务已删除
4700,已启用计划任务
4701,计划任务已禁用
4702,计划任务已更新
4703,令牌权已经调整
4704 ,已分配用户权限
4705 ,用户权限已被删除
4706 , 为域创建了新的信任
4707 ,已删除对域的信任
4720,创建用户
4722 , 用户帐户已启用
4723 , 尝试更改帐户的密码
4724 ,尝试重置帐户密码
4725,用户帐户已被禁用
4726,用户帐户已删除
4738, 用户帐户已更改
4739, 域策略已更改
4740 , 用户帐户已被锁定
4741,已创建计算机帐户
4742, 计算机帐户已更改
4743,计算机帐户已删除
1074 开关机时间
6005,表示日志服务已启动,用来判断正常开机进入系统。
6006,表示日志服务已停止,用来判断系统关机。
6009,表示非正常关机, 按ctrl、alt、delete键关机。
41,表示系统在未先正常关机的情况下重新启动
4199,当发生TCP/IP地址冲突的时候,排查用户IP网络的问题。
35,36,37,记录时间客户端状态信息,35表示更改时间源,36表示时间同步失败,37表示时间同步正常
rootkit
rootkit是什么和原理以及使用这篇讲过
排查
rootkit要介绍的知识太多了,如果要细细的排查起来也麻烦,先等麋鹿在出几期rootkit原理和基础知识,差不多铺垫完以后再细讲
那今天就先说一个简单--看注册表,比如
HKEY_LOCAL_MACHINE\SOFTWARE\$77config,77
因为在安装完后,注册表编辑器会被注入rootkit,但这个注册表项是不可见的。想看注册表需要先用 Test Console从regedit中分离rootkit。
工具
如RootkitRevealer,GMER和BlackLight
监控和分析系统进程、启动项和文件系统
如Sysinternals 工具
希望各位读者看完我们的文章以后自己去实践一下,只有学到脑子里的东西才是自己的,如果遇到困难,可以加本人微信(i_still_be_milu)与麋鹿师傅一起探讨,炼心之路,就在脚下,我们一起成长。
同时欢迎各位同仁关注麋鹿安全,我们的文章会第一时间发布在公众号平台,如果不想错过我们新鲜出炉的好文,那就请扫码关注我们的公众号!(附上本人微信,欢迎各位同仁加我微信,和我探讨安全,同时欢迎同仁们的不吝指正)