如何在红队活动中使用PersistBOF实现持久化
关于PersistBOF
PersistBOF是一款针对Windows系统安全的持久化工具,该工具能够以自动化的形式实现常见的持久化技术。当前版本的PersistBOF支持Print Monitor(系统服务)、Time Provider(网络服务)和启动目录快捷方式劫持(用户服务)等。
PersistBOF所实现的所有技术都依赖于一个DLL文件,这个DLL文件会以分布式的形式存储到目标系统 磁盘中。
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/IcebreakerSecurity/PersistBOF.git
接下来,我们需要切换到项目目录,并运行make命令来构建源码:
make
最后,将生成的.cna文件添加到Cobalt Strike客户端即可。
参考语句:
persist-ice [PrintMon, TimeProv, Shortcut] [persist or clean] [key/folder name] [dll / lnk exe name];
工具使用
Print Monitor
工具所使用的DLL文件必须要存储在目标设备磁盘中,而且必须要在BOF运行之前在PATH环境变量中设置好DLL的路径位置(DLL搜索顺序),否则将无法正常实现持久化。
这种方式可以将管理员权限提升至SYSTEM权限,并实现持久化。
PrintMonitorDll使用样例:
1、将NotMalware.dll上传到C:\Windows\NotMalware.dll; 2、NotMalware.dll将通过PrintMon以TotesLegitMonitor来实现持久化; 3、程序将立即以SYSTEM权限执行; 4、程序会在系统启动时自动执行;
Time Provider
运行了PersistBOF之后,程序将通过svchost.exe以NETWORK SERVICE的形式在系统启动时执行。
TimeProvider使用样例:
工具使用TimeProv并通过TotesLegitTimeProvider实现持久化(C:\anywhere\NotMalware.dll);
启动目录劫持
创建一个新的、用户可写的目录,然后将可劫持的Windows代码拷贝到该目录中,并在启动目录中创建一个指向该文件的快捷方式。最后,该程序将会在用户登录时执行。
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
https://github.com/IcebreakerSecurity/PersistBOF
参考资料
https://stmxcsr.com/persistence/print-monitor.html
https://stmxcsr.com/persistence/time-provider.html
https://pentestlab.blog/2019/10/28/persistence-port-monitors/
https://blog.f-secure.com/hunting-for-junction-folder-persistence/
https://attack.mitre.org/techniques/T1547/010/
https://attack.mitre.org/techniques/T1547/003/
https://attack.mitre.org/techniques/T1547/009/
精彩推荐
相关文章
- rust 入门笔记:使用rust实现双向链表、二叉树
- 使用functools.singledispatch在Python中实现函数重载
- MySQL存储过程中使用FOR循环的实现(mysql存储过程for循环)
- 如何使用MySQL快速实现数据库操作?(中如何使用mysql)
- 使用利用Oracle数据库的通配符实现模糊查询(oracle的通配符)
- Linux操作系统移植:实现技术的深度探索(linux操作系统移植)
- 队列使用Redis实现Java限时过期队列(redisjava过期)
- 使用Redis实现数据库的创建与管理(redis如何创建数据库)
- 使用Redis实现游戏排行榜(redis游戏排行榜)
- 使用Redis轻松构建高效队列(redis如何实现队列)
- _concatOracle中使用WM_CONCAT聚合函数实现多值字段拼接(oraclewm)
- 更新数据库现状:使用SQLServer实现行级操作(sqlserver更新行)
- Linux多用户环境下如何实现同时登录控制台?(linux多用户同时使用)
- 如何使用SQLServer实现分页查询(sqlserver做分页)
- 如何使用Oracle实现自增(oracle 怎么自增)
- 使用Linux AWK脚本轻松实现数据处理(linux awk 脚本)
- MySQL中的IN子句如何利用索引实现高效查询(mysql中in使用索引)
- MySQL中如何使用Event调度器实现自动化任务(mysql 中event)
- 1 MySQL 容器化上云,数据存储全方位2 使用容器将 MySQL 数据库部署到云端 3 流行软件 MySQL 上容器技术的应用 4 容器技术在 MySQL 软件上的实现 5 如何在 MySQL 上使用容器技术实现云上部署
- Oracle中使用两目运算符实现精准数据查询(oracle两目运算符)
- Redis连接池如何优化实现(redis连接池怎么使用)
- 消费使用Redis消息队列实现数据顺序消费(redis消息队列顺序)
- android使用Messenger绑定Service的多种实现方法
- php实现的发送带附件邮件类实例