写这篇帖子源于带过的实习生和打ctf认识的高校朋友,大家也都是抱怨安全不好干,工资低,搞病毒太低端不如搞漏洞有技术有发展,二进制不挣钱不如挖src来的舒服,做安服这辈子都难出头。不做评论因为也刚入行1年左右,本就看不透。但想给刚入门安全或入门病毒、安服朋友们分享点内容,希望有所帮助。
因为人员不多应急服务理应都在这边来做,后面随着产品推进与客户量上升,多次磨合后基于Web开发了一套半自动化应急响应平台,后期如果引擎比较完善,对接威胁数据准确,基本实现相对的自动化服务流程,这东西不是产品,只是为了内部工作与产出积累才诞生的。
假设客户种了勒索、挖矿。日常手法,简单了解网络top,pc内存转储同时隔离节点。拖工具pchunter、procexp等,从日志、最近改动文件、进程、自启动、网络端口初步探测。通过时间节点脑补整个感染过程,dump内存与提取样本,简单IDA分析找URL或环境变量路径,分析脚本提取关键数据。公司一般都有自己的一套常见的专杀工具,针对病毒进行扫、匹配、清理、加固。做了这些事之后上msf或cs来做渗透检测,专业点的在做一下内网横向检测,找一些poc复测,通过跳板顺藤摸瓜排查,针对活跃的回连ip进行溯源,端口进行探测与反弹shell,分析样本,最终综合产出各类报告。
很多东西还得给客户解释清楚,搞安全不能以暴治暴,不能被D了入侵了,你找到回连,上去就是一顿2&C+D,而且都是IDC跳板没有啥用的。
工具初版是C写的,只是为了辅助快速工作,第一个版本成型,只有采集模块,数据采集上来后,用sql来看其实程序里面写了规则链,关联检测,其实我感觉sql高效,在部分实战中也很有成效。内网环境下,采集后生成xx.docx文档,传递过来就可以分析了, 可以远程支撑不用跑来跑去, 原框架如下:
采集模块:系统信息采集(systeminfo)这是程序里面唯一调用的_popen指令实现的,因为一开始图方便,后面考虑兼容win7~win10,如计划任务检测,task se api全是用的2.0,抛弃了win api 1.0的的接口。
上述采集其实都不难,如果你用心两天开发量估计都不到,一天就可以搞定。要思考的数据提取后如何站在应急的角度去利用,找到线索。写很多条规则,如自启动 --> 进程 ---> 端口 --> 文件,排查一条线索,也可以是进程 --> 端口 --> 自启动 --> 文件 --> 注册表,这里数据还没有涉及日志分析,你可以根据这些链做多条匹配。
当你要脚本做成工具的时候,linux就跑python就好了,虽然我感觉go更好...... 很少有人写个QT,一键检测跑到Censtos上。但是win下特别是政府之类的,可以用图形库写个界面,当时我给否决了,Web做到炫酷就够了,mfc写个交互其实已经够用,每一个环节,最终闭环都呈现在Web,基于原来有平台更合适,初版信息采集工具诞生了,当然你要带上界面引导与良好的交互可以是文档,下面把图标之类的都替换了:
这样你的基础算是完成了,而且根据一些情况编写一些规则或者直接用SQL做,我认为最灵活的方式,采集数据到云端mogdb or mysql,做sql直接展示到WEB最合情合理,无网络下生成数据报告与sql数据字段,直接导入到数据库写个定时器直接产出。
剩下考虑如何系统内部溯源,个人喜欢跑个kail上nmap、msf开是冲,针对445一系列的端口,有些是从OA系统等应用爆发的,基本以日志时间节点为主,被清理那就只能根据网络环境,从外网尝试撕口开测。但是想做自动化溯源,其实还是基于log来做才行,后来写dll插件用于检测内部溯源,以Time为时间节点进行排查,假设rdp 10点被爆破成功,10:1执行了创建了进程,powershell同时间阶段有600 EventID,包括文件IO等操作,可以基于时间梳理一条或者多条链接,组织成不同的规则,大致如下,包括常见的日志分析:
在进行规则处理的时候,以结构体EVENTLOGRECORD.EventID and
EVENTLOGRECORD.EventType and
EVENTLOGRECORD.TimeWritte三要素或者四要素梳理链,然后在根据采集信息进行综合匹配。程序就不仍dll了,因为自己做的引擎...还是说日志分析工具,数据做规则匹配,总的来说想做一个初版本、非产品化的工具是够了,在常年的积累中,你的规则会越来越多,相对越来越精准,最后总会以一种合适的方式去工作,描绘整个流程,大体效果,把日志与事件节点数据展示到ListContrl中,项目中就不仍dll,因为大家有思路就都会写,只是给入门的朋友提供一些思路:事件响应:EventID
4624 --登录成功
4625 --登录失败
4634 -- 注销成功
4647 -- 用户启动的注销
4672 -- 使用超级用户(如管理员)进行登录
mstsc登陆日志事件: 4776(失败)、4648(登陆)、4624、4672
4688:进程创建
4689:进程终止
4658:注册表
1102:日志清除
整个项目难度在几天内,量不大,因为本身写的不太完善,rdp检测的dll插件就不仍Git了,只是分享给入门的朋友,多一些玩法与思路,祝那些还没踏出大学的少年,年少有为。
git:
https://github.com/TimelifeCzy/windows-emergency-servicetools
最后于 3天前 被一半人生编辑 ,原因: