RdpStrike 从mstsc.exe中提取明文密码
RdpStrike简介
RdpStrike
基本上是我为了深入研究位置独立代码 (PIC) 而构建的一个小项目,参考了C5pider撰写的一篇博客文章,并与0x09AL创建的RdpThief工具相结合。
该项目旨在从mstsc.exe中提取明文密码,shellcode 使用硬件断点来挂钩 API。它是一个完整的位置独立代码,当 shellcode 注入进程时,它会将硬件断点放在三个不同的 API上(SspiPrepareForCredRead
, CryptProtectMemory
, 和CredIsMarshaledCredentialW
),最终捕获任何明文凭据,然后将它们保存到文件中。攻击者脚本确保监视新进程;如果进程已生成,它会将 shellcode 注如其中。
当攻击者脚本加载到 CobaltStrike 上时,将有三个新命令可用:
rdpstrike_enable
– 启用heartbeat
对新 mstsc.exe 进程的检查并将其注入其中。rdpstrike_disable
– 禁用heartbeat
对新 mstsc.exe 的检查,但不会删除挂钩并释放 shellcode。rdpstrike_dump
– 读取文件并打印提取的凭据(如果有)。
直链下载地址
https://lp.lmboke.com/RdpStrike-main.zip
使用方法
导入.cna文件到cobalt strike中即可。
威胁指标
它使用 cobaltstrike 内置的 shellcode 注入器。很容易被内核回调函数检测到
PsSetCreateThreadNotifyRoutine/PsSetCreateThreadNotifyRoutineEx
钩子被放置使用
GetThreadContext
并且SetThreadContext
调用是从不受支持的内存中执行的。shellcode 在 TEMP(
C:\Windows\Temp
) 中写入一个文件,文件名称为{7C6A0555-C7A9-4E26-9744-5C2526EA3039}.dat
还有一次
LoadLibraryA
加载调用dpapi.dll
,它同样来自不受支持的内存。NtQuerySystemInformation
syscall 用于获取进程中的线程列表。
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。