石景山述职实录
从去年12月到昨天8月,近一年的实习加试用工作结束了,非常感谢公司中遇到的老板、同事、和一个个实习生,受益良多,今后也会借助你们传授的经验,一路向前。
好了,开始复盘期间学到的一些东西。
APT
在此之前,只以为这种攻击离我很遥远,接触到的样本可能也大抵是些国内小打小闹或者勒索病毒之类的程序,经过此次学习,对国内外APT组织也有了更加清晰的认识。

来自docs.google.com
样本分析
笔者一直试图找到一个可以分析所有样本的通用流程方法,但不如人意,除了直接看全部汇编,大多都会有所遗漏,下面暂且给出一些我常用的方法和技巧。

通常来说这些样本的出现会先是钓鱼文件的伪装,然后vbs、powershell、js等脚本文件投递可执行文件,每个程序一般至少三阶段或者更多投递载荷,经过shellcode注入payload实现持久化控制。

静态分析
一般来说静态分析和行为检测是最简单,同时也最快的,同时也容易被忽略其重要性。这东西已经有很多自动化工具可以实现了但是大道至简,还是主张用一些最基本的东西自己去看,或者自己写的脚本,工具唯一的好处就是封装了一些基本原理,然后可以批量化的执行,看起来更加宏观,以及不会和人一样迷糊,犯疏漏某一步流程,但是使用时间长了,会有很多想要diy的功能不被具备。

其中使用的工具有Exeinfope、strings、floss(火眼写的开源工具可以查看unicode编码和猜测混淆字符串)、CFF、ida以及搜索hash的开源情报社区和搜索引擎等
行为检测
可以使用沙箱any.run或者奇安信、微步那几个国内的来观察样本行为;也可以使用自己的虚拟机双击运行,通过Process Monitor、everything、Autorun、API Monitor、process hacker等工具,如果不想下载也可以使用火绒提供的高级分析工具。这个过程中基本可以直接观测到C2信息,除了行为外也可以同时使用wireshark捕获流量通信行为。
这里面Process monitor效果非常好,他是直接对接的ETW,这是对接在内核的日志追踪文件,虽然恶意程序没有显示调用API,通过hash调用一样会被记录到日志中,除非程序直接hook到ring 0层,即便是地狱之门调用也会被记录在册。

动态调试
是最复杂和耗时的一步,VMP壳和流程混淆出现一般会让逆向难度急剧增加。如果一步一步走汇编代码很容易走进一些耗时代码中,很难有耐心走完,如果再加上一些反调试代码,如进程重启,判断debugger,exception或者回调函数执行等,会让人头皮发麻。
一般来说,程序会隐藏掉关键API,也就是在静态分析时导入表不能直接找到的调用函数。可以从他们下手,程序运行会先调用Loadlibary和GetProcAddress函数获取他们地址,可以通过断点这两个API拿到,这些一阶段的关键API,然后一一断点F4执行,通过ida配合xdbg.
当然这样效率其实还是有些慢,可以适当编写脚本批量对程序做一些搜索和演算,比如call [reg]之类的间接调用。即便如此,流程还是需要继续优化,相信每个师傅都有一套自己的流程方便自己。

claude生成
拓线
对样本文件的分析只是开始,后面更重要的是通过得到的信息进行朔源拓线,根据信息的拓线难易程度,总结出了下面的图形

痛苦金字塔
常见的方法思路有IOC、样本侧、流量侧、协议侧、日志侧以及地缘政治侧等。IOC很容易理解,ip、程序hash、url等,也是分析样本一般需要得到的关键。样本侧,一般来说根据静态PE文件或者ELF等文件特征进行关联匹配,通常编写YARA规则:
1 | rule RuleName |
大多数这种狩猎TIP是需要费用订阅使用,像VT、微步等。这里笔者手里捏了两个:
- yaraify
- unpac.me
流量侧主要是根据pcap抓取原始流量数据进行拓线分析,通常根据fofa,google dork等网络空间测绘工具进行,针对请求头和请求体(body)内容,进行搜索出相似攻击域名:
body="This C2 Panel" || body="Powered by EvilCMS" || body="特定关键字"
协议侧针对传输协议的自定义行为进行,或许像CS一样使用cookie传输beacon数据,甚至自己构建全新协议,除此以外还有所使用加密证书相关信息也可以进行关联,一般来说这种方法更稳定持久,和难以伪造。
协议和地缘政治就不必多讲。拓线时需要注意一下几个点:
- 不止到ip,更需要这个ip对应端口,才能确认是否为恶意流量,IOC是否可靠
- 需要朔源到样本流出源头,因为一手之后的信息通常是被删除许多的,层层剥离过

gork生成
二进制
在此之前我对漏洞的理解很模糊,没想到可以直接有最新的EXP、POC可以直接使用。就钓鱼而言,如果可以直接入侵,就不必想钓鱼一样步步引诱,而且,提权也容易了很多。
这里我主要对免杀和钓鱼相关技术进行了提高。
免杀
之前认为免杀会用到许多自写的脚本,以及对杀软的非常了解。自己做了后发现,基本技术就那些lazy importer,或者early bird,亦或者APC等等只要听说的都有公开源码,只需要负责这些模块的重新排列组合。
工作的时候主要使用的还是Cobalt Strike4.8,对他的协议和流量以及beacon等都已经非常熟悉,加上最近4.5的源码泄露。除此之外应用广泛的就是大灰狼和银狐两套远控系统,MSF的话GUI没有这三款方便。
这里自己试着写了shellcode以及加解密CS的载荷投递都做了一遍,但是对于持久化提权的功能迟迟不能下手,后面对漏洞的理解加上了后,发现bypass UAC需要进一步的漏洞利用,提权后再加持久化会方便的多。
钓鱼
原本理解的钓鱼比较比较肤浅也确实那么做过,但是效果其实不太好。后面进一步了解到AiTM,中间人劫持也没想象那么难,甚至于使用evilginx可以直接一键化部署;但是动作幅度还是太大,再进一步了解到token可以更加隐蔽,并且等效的作用;之后又是Nginx反代(evilginx应该也是使用的它)。对钓鱼的认识从传统的步入了现代前沿钓鱼视野中,最近Stripe的token就是被盗取,导致其他应用大面积取消对他的授权。可见已经步入了一线技术行列。

Web
本来是样本分析进去的,结果做了很多Web相关工作,不过也好,知识面更加广泛了
之前一直听人说,信息收集才是渗透测试的重中之重,理解了但是又没有完全理解,自己做过之后才深有体会,最后的shell或者inject不过是一键双击,重要的是对应漏洞的寻找和目标环境的把控。
信息收集
很多站点或者物联网设备,并不需要说是上去就需要直接挖src或者自己找到一个sql注入之类的。可以批量收集然后使用,一个漏洞直接执行即可。但是这就要求收集站点的版本号和公布漏洞CVE是否匹配直接决定了成果的多少。
这里面常常使用fofa、微步、zoomeye、shadan等,这几个虽然说原理相似但是毕竟是不同站点,资源其实还是有些出入的,匹配指纹的时候,运气好,响应头会返回版本信息,不好的话,就只能通过iconhash关联body等关键词进行搜索;除此之外,google dork常常被忽略,因为没法像上面那些搜索引擎一样直接导出域名条目。但是它所拥有的数据是无法想象的,很多固定设备的dork语句都可以直接找到,比如:

下面是一些我平时收集EXP网址:
- https://www.exploit-db.com/
- https://sploitus.com/
- https://www.expku.com/
- https://fedisecfeeds.github.io/
github和微信公众号等地方也会定时刷新很多新公开POC脚本。
情报
之前认为情报,不就是一些公开信息,谁到能获取到,没必要单拎出来细究。但是后面运营MISP时收集OSINT,发现每次以为获取到了全部信息之后,都有更大的平台和更多的资源没有被纳入使用🫤。
首先第一个被忽略的平台,微信公众号,上面获取poc也提到了这个地方。不知不觉中它已经发展成为了一个最新数据源的汇聚地,国内每个官方或者私人运营团体都会在上面注册自己的公众号发布最新招聘信息和技术报告或者文章,甚至于收集某一领域的最前沿的信息,比如越南APT,又或者黑产最新洗钱技术等。
推特,不知道为什么,国外分析员喜欢把发现的一手资料或者觉得有嫌疑的样本IOC和捕捉环境分享到上面。比起脸书和Tiktok、instagram等,他被技术人员使用率要高得多。
telegram其实一手情报并不多,难得的是一些灰色的东西可以直接被使用或者获取到。相比之下,国内外的一些论坛可以获取到更加实时的动态,hacker news、breachforms、nga、v2ex、freebuf、Tools、Mediums等。

思考
期间,很多人都和我谈论过他们的经历,让我无需亲自涉足就可以吸纳一些:
- 两个指标,对行业的影响,和对自己的行为举止的期许
- 人脉大于技术,多向上社交
- 注意安全和身体,勇于尝试
知易行难,多改变和加强自信心吧
行迈靡靡,行道迟迟。
行不有终,我将有终!






