背景
借ATT&CK模型里面的描述:https://attack.mitre.org/tactics/TA0003/
持久性包括攻击者用来在重启、更改凭据和其他可能切断其访问的中断期间保持对系统的访问的技术。用于持久性的技术包括任何访问、操作或配置更改,使它们能够在系统上保持立足点,例如替换或劫持合法代码或添加启动代码。
学习资料:
先看材料:
1、[objective-see.com]: https://objective-see.com/
一个神奇的网站,研究mac安全,建议收藏,各种神奇工具:lulu、blockblock,对于持久化方式,人家已经做了总结,很详细,包括具体家族的样本介绍
https://taomm.org/PDFs/vol1/CH 0x02 Persistence.pdf
2、https://www.jamf.com/blog/category/jamf-protect/
JAMF-protect:研究mac安全,,含着苹果的金钥匙出生的产品,可以看看
3、https://www.sentinelone.com/labs/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/,
sentinelone的博客,值得一读
回归主题
有请今天的主角:PoisonApple,希望大家认真阅读代码理解实现过程,笔者主要用来学习和测试EDR
https://github.com/CyborgSecurity/PoisonApple
运行界面:
$ poisonapple --list
, _______ __
.-.:|.-. | _ .-----|__|-----.-----.-----.
.' '. |. | | | | |__ --| | | | |
'-."~". .-' |. ____|_____|__|_____|_____|__|__|
} ` } { |: | _______ __
} } } { |::.| | _ .-----.-----| |-----.
} ` } { `---' |. | | | | | | | -__|
.-'"~" '-. |. _ | __| __|__|_____|
'. .' |: | |__| |__|
'-_.._-' |::.|:. |
`--- ---' v0.2.2
+--------------------+
| AtJob |
+--------------------+
| Bashrc |
+--------------------+
| Cron |
+--------------------+
| CronRoot |
+--------------------+
| Emond |
+--------------------+
| Iterm2 |
+--------------------+
| LaunchAgent |
+--------------------+
| LaunchAgentUser |
+--------------------+
| LaunchDaemon |
+--------------------+
| LoginHook |
+--------------------+
| LoginHookUser |
+--------------------+
| LoginItem |
+--------------------+
| LogoutHook |
+--------------------+
| LogoutHookUser |
+--------------------+
| Periodic |
+--------------------+
| Reopen |
+--------------------+
| Zshrc |
+--------------------+
分析学习,仔细阅读代码以后就会发现还没objective-see描述的全,但是基本上符合预期,主要包括:LaunchAgent 、LaunchAgentUser 、LaunchDaemon,计划任务 ,开机恢复,bash/zsh打开+关闭【可能没提及但实操发现可以,回头有空在补】
案例演示
1、建立plist,路径:LaunchAgent 、LaunchAgentUser 、LaunchDaemon
(1)复制whoami 为test:cp /usr/bin/whoami /tmp/test
(2)写入plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.apple.test</string>
<key>ProgramArguments</key>
<array>
<string>/tmp/test</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOL
反思总结
在某次攻防对抗+某次挖矿样本分析中,多次遇到过使用plist方式进行持久化的操作,并以此编写了针对的检测规则发挥了奇效(EDR前提是日志能采集到)。
之前计划任务清除不干净导致一直有mail提示,后来找到了原因:https://www.twle.cn/t/19396