EDR 通过CreateService创建服务分析——底层rpc调用系统接口操作注册表,还是要进行OS API的采集,性价比最高
EDR 通过CreateService创建服务分析——底层rpc调用系统接口操作注册表,还是要进行OS API的采集,性价比最高
先说下注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services的作用是什么?
注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services 是 Windows 注册表的一个分支,它包含了有关系统服务和驱动的配置信息。
这个路径下的每个子键都代表一个服务或驱动,它们的名称通常与服务的名称一致。每个子键下面可以有一系列的值,这些值用于指定服务的启动类型、错误控制、二进制路径等一系列配置信息。
在日常使用中,你不应随意修改这个路径下的信息,因为不正确的修改可能会导致系统服务无法启动或者系统崩溃。如果需要更改服务的设置,通常推荐使用服务管理器(services.msc)或其他专用工具。
需要注意的是,尽管这个路径下的信息可以提供关于系统服务的很多信息,但并非所有服务的配置都在这里。有些服务可能有自己的配置文件或者使用其他机制来存储配置信息。
我自己创建一个测试代码,并采集一些数据:
13:20:36:641, create_service_test.exe, 7228:0, 7228, EXEC_create, C:\Users\xxx\source\repos\create_service_test\Debug\create_service_test.exe, parent_pid:28164 cmdline:'C:\Users\xxx\source\repos\create_service_test\Debug\create_service_test.exe' image_base:0x0000000000840000 image_size:0x00023000 , 0x00000000 [操作成功完成。 ], 13:20:36:641, create_service_test.exe, 7228:21824, 7228, FILE_read, C:\Windows\Prefetch\CREATE_SERVICE_TEST.EXE-4892928C.pf, offset:0x00000000 datalen:0x00000FB3 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\ACP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\OEMCP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow64\x86, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow64\x86\, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\ACP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CodePage\OEMCP, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000009 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CustomLocale, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\ExtendedLocale, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\DLL, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\safer\codeidentifiers, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem\LongPathsEnabled, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Windows\SysWOW64\ghijt32win10.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\RuleCount, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, EXEC_module_load, C:\Windows\SysWOW64\ghijt32win10.dll, base:0x0000000061850000 size:0x00022000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\CustomLocale, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Language, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Language\InstallLanguageFallback, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\Type, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\DefaultFallback, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\en-US, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\DefaultFallback, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\en-US, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\LCID, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\UILanguages\zh-CN\Type, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785, access:0x02000000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\MUI\Settings\LanguageConfiguration, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785, access:0x02000000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785, access:0x02000000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785\Control Panel\Desktop, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785, access:0x02000000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785\Control Panel\Desktop\MuiCached, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_USERS\S-1-5-21-147214757-305610072-1517763936-4064785\Control Panel\Desktop\MuiCached\MachinePreferredUILanguages, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\SideBySide, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Windows\SysWOW64\ghijt32win10.dll, access:0x00120089 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:36244, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Windows\SysWOW64\vcruntime140d.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Windows\SysWOW64\ucrtbased.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Windows\SysWOW64\msvcp140d.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:37240, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:36244, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\RuleCount, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:37240, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\RuleCount, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:36244, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\RuleCount, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, EXEC_module_load, C:\Windows\SysWOW64\vcruntime140d.dll, base:0x0000000079050000 size:0x0001B000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, EXEC_module_load, C:\Windows\SysWOW64\ucrtbased.dll, base:0x0000000079130000 size:0x00174000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, EXEC_module_load, C:\Windows\SysWOW64\msvcp140d.dll, base:0x0000000079070000 size:0x000B7000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE, access:0x02000000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore\ghdll32, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore\userdll32, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore\dependdir32, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\QMGHCore\dependdll32, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Program Files (x86)\Qianxin\Tianqing\hookbase\x86\vcomp140.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\RuleCount, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:0, 7228, EXEC_module_load, C:\Program Files (x86)\Qianxin\Tianqing\hookbase\x86\vcomp140.dll, base:0x0000000061820000 size:0x00022000 , 0x00000000 [操作成功完成。 ], 13:20:36:657, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, access:0x00000001 , 0x00000000 [操作成功完成。 ], 13:20:36:672, create_service_test.exe, 7228:0, 7228, FILE_open, C:\Windows\SysWOW64\kernel.appcore.dll, access:0x00100021 alloc_size:0 attrib:0x00000000 share_access:0x00000005 disposition:0x00000001 options:0x00000060 , 0x00000000 [操作成功完成。 ], 13:20:36:672, create_service_test.exe, 7228:21824, 7228, REG_openkey, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp, access:0x00020019 , 0x00000000 [操作成功完成。 ], 13:20:36:672, create_service_test.exe, 7228:21824, 7228, REG_getval, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Srp\Gp\RuleCount, type:0x00000000 datalen:0 data:, 0x00000000 [操作成功完成。 ], 13:20:36:672, create_service_test.exe, 7228:0, 7228, EXEC_destroy, C:\Users\xxx\source\repos\create_service_test\Debug\create_service_test.exe, parent_pid:28164 cmdline:'C:\Users\xxx\source\repos\create_service_test\Debug\create_service_test.exe' , 0x00000000 [操作成功完成。 ], x
测试代码:
#include <windows.h> #include <tchar.h> #include <iostream> int main(int argc, char* argv[]) { SC_HANDLE schSCManager; SC_HANDLE schService; TCHAR szPath[100] = _T("C:\\Windows\\System32\\calc.exe"); /* if (!GetModuleFileName(NULL, szPath, MAX_PATH)) { std::cout << "Cannot install service (" << GetLastError() << ")" << std::endl; return 1; } */ // 获取服务控制管理器句柄 schSCManager = OpenSCManager( NULL, // 本地计算机 NULL, // ServicesActive 数据库 SC_MANAGER_ALL_ACCESS // 完全访问权限 ); if (NULL == schSCManager) { std::cout << "OpenSCManager failed (" << GetLastError() << ")" << std::endl; return 1; } // 创建服务 schService = CreateService( schSCManager, // SCManager 数据库 _T("MyService2"), // 服务名字 _T("My Sample Service"), // 服务显示名字 SERVICE_ALL_ACCESS, // 完全访问权限 SERVICE_WIN32_OWN_PROCESS, // 服务类型 SERVICE_DEMAND_START, // 服务启动类型 SERVICE_ERROR_NORMAL, // 错误控制类型 szPath, // 服务的二进制路径 NULL, // 没有加载的组名 NULL, // 没有标记标识符 NULL, // 没有依赖服务 NULL, // 本地系统账户 NULL // 没有密码 ); if (schService == NULL) { std::cout << "CreateService failed (" << GetLastError() << ")" << std::endl; CloseServiceHandle(schSCManager); return 1; } else { std::cout << "Service installed successfully" << std::endl; } CloseServiceHandle(schService); CloseServiceHandle(schSCManager); return 0; }
从采集的数据看,最终create serice会通过rpc去调用系统接口注册服务,注册表里有新增key MyService2:
结论:
EDR 通过CreateService创建服务分析——底层rpc调用系统接口操作注册表,还是要进行OS API的采集,性价比最高!