大家好:
我最近在思考一个问题,做安全从个人,公司,行业到底应该去做什么,怎么样才能真正体现安全能力,能防御未知威胁,取得客户的信任,我阅读了很多的文章,尤其是微软的文章,得到一个认知是做安全的本质就是做安全攻防,以一流的安全攻防能力赋能产品打造一流的产品。
或许做检测的人需要更懂攻击,这样在检测侧,数据分析侧,就可以让产品拔高高度,我依旧学习了很多微软的文章,也决定在这个五一设立我的公众号,开启我对于APT,高级攻防技术,0day,安全产品等不限定平台的技术分享,以做检测引擎,数据分析的角度出发去看待如何更好的检测恶意攻击,尤其是未知的恶意攻击,比如说0day,以自动化模拟的角度去看待怎么更好的开发自动化模拟攻击平台,希望对大家有所帮助,如有错误请多包容纠正。
第一篇: Sandworm勒索攻击模拟、推演、分析
该次分析从模拟Sandworm勒索攻击角度出发,理清整体攻击的链式路线,使用到的技术,和每次攻击是怎么被启动的等细节,以期达到更好的辅助自动化模拟,更好的检测恶意攻击,如下是整体攻击图:
1.初始访问
Sandworm通过fherbert的账户密码通过ssh登录到了linux(10.0.1.5)机器,并且在该机器安装PHP webshell以实现持久的渗透。
2.信息收集
利用该webshell 下发命令去实现信息收集,主要命令包括 whoami, uname, ls。
3.权限提升
利用PHP WebShell上传一个Exaramel的 linux版本可执行文件到被攻陷的linux机器,为后续的内网渗透奠定基础,并且通过webshell下发命令去更改该执行文件的权限和定义它的启动方式,如下:
3.1. cmd=chmod+755+centreon_module_linux_app64
3.2. 利用check.sh启动该执行文件,并且利用SUID 提权技术实现提权(/bin/backup-> check.sh->centreon_module_linux_app64)
通过如上操作顺利完成了提权,为后续实现权限维持,获取/etc/shadow实现凭证转储等奠定了基础。
4.此时返回了新的Exaramel linux C2,利用该C2 Server下发命令实现渗透
4.1.权限维持:利用crontab和systemd实现权限维持。
4.2.凭证转储:获取/etc/shadow, bash history,SSH keys等的内容并进行离线爆破。
4.3.横向移动 + 权限维持:
利用得到的本地管理员级别的账户密码,实现从linux(10.0.1.5)横向移动到windows(10.0.1.7),并且利用smbclient上传Exaramel Windows dropper到C:\Windows\wsmprovav.exe。
我发现在模拟APT攻击中比较喜欢使用注册表去实现权限维持,所以在横向移动的时候,该次模拟攻击直接为获取到密码的fherbert设置了注册表持久性,当利用RDP模拟该用户登录时候,Exaramel windows dropper会被启动,该dropper 下载Exaramel DLL,执行该dll连接远程C2,实现持久渗透,详情可看图片内容(建议仔细查看):
此时我们可以得到了windows的C2 Server,在该基础上我们去实现该次勒索的终极目的,发现并且横向到DC,并且实现快速传播,而如果要横向到DC则需要获取域管理员的账号,密码/hash,和DC具体的ip地址,而该次攻击利用oradump.exe和mslog.exe去实现凭证窃取,利用dsquery收集了域信息,步骤如下:
5. 此时返回了新的Exaramel Windows C2,利用该C2 server下发命令实现渗透。
5.1.信息收集:查询注册表收集本机信息,利用dsquery收集域主机信息。
5.2.凭证转储: 落地oradump.exe(收集web 浏览器密码)和mslog.exe(键盘记录器)到gammu机器并且收集凭证。
5.3.横向移动:利用RDP借助得到域管凭证(通过键盘记录器的方式获取到凭证)登录到DC(10.0.1.4),并且启动管理员权限的powershell,上传NotPetya勒索软件,启动该软件实现快速勒索。
6. 勒索
勒索功能由一个dll(C:Windowsperfc.dat)实现,该次勒索基于AES-128加密C:Users下的文件。利用rundll32.exe去加载执行:
rundll32.exe C:Windowsperfc.dat,”#1″
勒索利用到的攻击技术: 域信息收集,凭证转储,横向移动(wmic),权限维持(计划任务),清除日志(wevtutil)等 。
总结:
我应该表达清楚这次模拟Sandworm攻击是怎么形成的,是怎么实现整体攻击的,想和大家总结一下。
【模拟攻击侧】
当我们去模拟该次攻击的时候我们可以以上述列出的攻击流程去实现相应的代码,以类的形式安排每个战术下的技术,并且以插件化的形式与自己的主agent进行交互,而BAS的特点之一是自动化,则我的理解是在代码里写好相关的攻击流程,只需要在后台开启相关模拟攻击按钮即可,当然再上一步可以后台配置每个战术步骤,达到灵活定制,自动化的目的。在pr宣传和客户展示阶段可以表明清楚是模拟著名的Sandworm勒索攻击以拔高自己的安全能力。
【威胁检测侧】
这方面我想是单点检测必须要有,即在客户那里保障一些告警必须是有的,结合威胁情报,云查杀等可以解决很多问题,第二怎么去做好未知威胁检测,尤其是跨机器的检测,重点技术的关照,关联,0day/nday检测能力是一直讨论的问题,希望我们可以一起后面再聊。
最后,谢谢能看到这里的各位朋友~,希望各位朋友可以多多关注我的公众号,我的联系方式:
推特Xiaoliang Liu(@flame36987044),微信:HiluSmile
同时今年我所在的团队也和IBM合作输出了一些关于在野漏洞攻击的事情,如下链接:
https://securityintelligence.com/posts/patch-tuesday-exploit-wednesday-pwning-windows-ancillary-function-driver-winsock
希望未来可以为行业内感兴趣的人带来一些感觉有用的内容。
原文始发于微信公众号(xiaoliangliu):APT分析之Sandworm勒索攻击模拟、推演、分析