对抗性系统管理 - 实现高效"就地取材"攻击的关键技术
介绍"就地取材"搜索(LOLSearches),使用SharePoint和Explorer的高级搜索操作符来辅助红队操作。
背景与方法
在我之前的角色中,我们经常采用"就地取材"策略,很少使用C2基础设施,而是依赖内部威胁凭据或通过合法方式访问系统。因此,我培养了强大的手动搜索数据和基于关键词追踪的技能。使用内置工具,手动搜索网络共享和SharePoint,并找到操作合法数据的实用方法。
LOLBAS/GTFOBINS项目已经被讨论过无数次,提供了许多使用合法操作系统二进制文件进行恶意目的的方法。同样,Snaffler、SauronEye和SnaffPoint等工具都在环境中提供了一定的搜索能力,用于寻找有趣的数据。
SharePoint搜索技术
SharePoint就像本地共享一样,对攻击者来说可能是有趣信息的宝库。如果没有正确加固,不同文件和文件夹的访问控制也可能很弱。它有一个相当不错的内置搜索功能,可以像Windows上的Explorer一样接受搜索词,但我最近学到的一点有用信息是它支持Kusto查询语言(KQL),因此可以接受复杂查询来寻找特定文件类型或包含某些信息的文件。
搜索查询基础知识
在深入研究大量查询之前,以下是一些在构建搜索查询时值得了解的关键信息:
- 通配符(*):使用*进行部分匹配。例如:
content:"pass*"
查找"password"、“passcode"等
- 邻近搜索:使用波浪号(~)查找彼此接近的术语。例如:
content:"password username"~5
查找"password"和"username"在五个单词内的文件
- 排除术语:使用NOT排除特定单词或文件类型。例如:
content:"password" NOT FileExtension:txt
排除文本文件
- 大小写敏感性:搜索不区分大小写,因此无需担心大小写
实用搜索查询示例
在脚本中查找密码
有几个查询可以在这里提供帮助,特别是在寻找密码时,从简单的内容搜索开始:
1
|
content:"password" OR content:"username" OR content:"credential" OR content:"secret" OR content:"key" OR content:"token" OR content:"login"
|
或者,如果您想寻找特定扩展名:
1
2
|
(FileExtension:ps1 OR FileExtension:bat OR FileExtension:sh OR FileExtension:cmd OR FileExtension:py)
AND (content:"password" OR content:"secret" OR content:"key" OR content:"credential" OR content:"token")
|
复杂凭证模式搜索
1
2
3
4
5
6
7
|
(
FileExtension:("ps1" OR "bat" OR "sh" OR "cmd" OR "py" OR "js" OR "ts" OR "rb" OR "pl" OR "php" OR "cs" OR "java" OR "go" OR "r" OR "sql" OR "groovy" OR "scala" OR "kt" OR "vb" OR "vbs" OR "psm1" OR "jsx" OR "tsx")
)
AND
(
content:("password=" OR "password :" OR "password =>" OR "password :" OR "passwd=" OR "passwd :" OR "passwd =>" OR "pwd=" OR "pwd :" OR "pwd =>" OR "secret=" OR "secret :" OR "secret =>" OR "key=" OR "key :" OR "key =>" OR "api_key" OR "apiKey" OR "token=" OR "token :" OR "token =>" OR "access_token" OR "client_secret" OR "private_key" OR "BEGIN PRIVATE KEY" OR "aws_access_key_id" OR "aws_secret_access_key")
)
|
使用邻近搜索在代码中查找更多内容
1
2
3
4
5
6
7
|
(
FileExtension:("ps1" OR "bat" OR "sh" OR "cmd" OR "py" OR "js" OR "ts" OR "rb" OR "pl" OR "php" OR "cs" OR "java" OR "go" OR "r" OR "sql" OR "groovy" OR "scala" OR "kt" OR "vb" OR "vbs" OR "psm1" OR "jsx" OR "tsx")
)
AND
(
(content:"password*"~5) OR (content:"passwd*"~5) OR (content:"pwd*"~5) OR (content:"secret*"~5) OR (content:"key*"~5) OR (content:"token*"~5) OR (content:"api_key*"~5) OR (content:"apiKey*"~5) OR (content:"access_token*"~5) OR (content:"client_secret*"~5) OR (content:"private_key*"~5) OR (content:"aws_access_key_id*"~5) OR (content:"aws_secret_access_key*"~5)
)
|
注释中的凭证
1
2
3
4
5
6
7
|
(
FileExtension:("ps1" OR "py" OR "js" OR "java" OR "cs" OR "php" OR "rb" OR "go" OR "kt")
)
AND
(
content:/.*(\/\/|#|\/\*|\*).*(password|secret|token).*/
)
|
系统管理员脚本追踪
系统管理员和开发人员经常喜欢将凭据放在文件中,因此追踪他们的脚本可以帮助发现凭据并更深入地了解脚本和系统的构建方式。
1
|
content:"net use" OR content:"ipconfig" OR content:"netstat" OR content:"ping" OR content:"tracert" OR content:"nslookup" OR content:"net user" OR content:"net localgroup"
|
AI和机器学习文件搜索
1
2
|
(FileExtension=pptx OR FileExtension=docx OR FileExtension=xlsx)
AND (ContentsContainMetadata:"machine learning" OR ContentsContainMetadata:"deep learning" OR ContentsContainMetadata:"neural network" OR ContentsContainMetadata:"artificial intelligence" OR ContentsContainMetadata:"natural language processing" OR ContentsContainMetadata:"computer vision" OR ContentsContainMetadata:"data mining" OR ContentsContainMetadata:"predictive modeling" OR ContentsContainMetadata:"supervised learning" OR ContentsContainMetadata:"unsupervised learning" OR ContentsContainMetadata:"reinforcement learning" OR ContentsContainMetadata:tensorflow OR ContentsContainMetadata:pytorch OR ContentsContainMetadata:keras OR ContentsContainMetadata:"scikit-learn" OR ContentsContainMetadata:pandas OR ContentsContainMetadata:numpy OR ContentsContainMetadata:matplotlib)
|
使用Explorer进行搜索
与使用SharePoint搜索类似,Windows Explorer也支持搜索操作符,允许在环境中进行更复杂的追踪。
如果您想查找包含密码的脚本:
1
|
(ext:.ps1 OR ext:.bat OR ext:.cmd OR ext:.vbs) content:"password"
|
如果您想在特定日期范围内查找内容:
1
|
datecreated:01/01/2023..12/31/2025 (ext:.ps1 OR ext:.bat OR ext:.cmd OR ext:.py OR ext:.js OR ext:.php OR ext:.rb OR ext:.pl OR ext:.java OR ext:.cs) content:"password"
|
查找在2023年1月1日至2025年12月31日期间创建的所有包含"password"的脚本文件。如果您只想在搜索中使用年份:
1
|
datecreated:2023..2025 (ext:.py OR ext:.js OR ext:.rb) content:"password"
|
更多搜索操作符和查询请查看GitHub仓库:ZephrFish/LOLSearches