内网环境分析
NAT网络地址转换
缓解了IPv4地址耗尽的问题
简单说就是同个公司,家庭,教室内的主机对外部通信时,把私有IP地址转换成公有IP地址。
NAPT(网络地址与端口转换NAPT)
两个私有IP地址都转换成公有地址,但是以不同的端口号作为区分
例如将一个局域网中的两个不同IP同一端口可以转换成同一公网IP不同的端口
window工作组
最常见,最普通的资源管理模式,将不同的电脑按功能分别列入不同的组中,以方便管理。
相同组中的不同用户通过对方主机的用户名和密码可以查看对方共享的文件夹(不同组的也行)但是能够使访问资源更有层次感。
windows域环境
域:是一个有安全边界的计算机集合(边界:一个域中的用户无法访问另一个域的资源);域内资源由DC(域控制器)集中管理。
域中至少有一台域控制器,域控制器中保存着整个域的用户账号和安全数据库。要想访问域,需要有一个合法的身份登录到该域中,不同身份对应的权限不同。
域控DC:在域架构中域控是用来管理所有客户端的服务器,负责每一台联入的电脑和用户的验证,域内电脑要互相访问需要经过它的审核。一个域中应该有两个域控,第二个备份。当域中的一个计算机安装了AD(活动目录)就变成了DC
AD(活动目录):相当于存储着网络中所有资源的快捷方式,用户通过寻找快捷方式而定位资源。
NTDS.dit:活动目录的数据库文件,该文件记录有以下三种表:
Schema表:包括各种类型对象的可选及不可选的各种属性
Link表:一个用户对象的所有属性的类型,包括每个属性的值及用户所属于的组等信息都属于这个表。
Data表:活动目录中用户,组,应用程序特殊数据和其他的数据全部保存在Data表中。
安全域的划分:内网(核心区和办公区(一般能够访问DMZ)),DMZ(边界网络,作为安全系统和非安全系统之间的缓冲区,用于对外提供服务),外网。
域中计算机的分类:域控制器,成员服务器,客户机,独立服务器
内网域渗透以获得域控制器的权限为目的,一旦域控制器沦陷,整个内网就尽在掌握中。
域渗透思路
1 通过域成员主机,定位出域控制器IP及域管理员账号
2 利用域成员主机作为跳板,扩大渗透范围
3 利用域管理员可以登录域中任何成员主机的特性,定位出域管理员登录过的主机IP
4 设法从域成员主机内存中dump出管理员密码
5 进而拿下域控制器、渗透整个内网
端口判断:外网vps做监听,内网机器测试常见端口,或直接使用端口扫描器进行扫描。
常见能出去的端口有80,8080,443,53,110,123等。
代理服务器:办公人员进行上网用的。常见的判断手法:
-
查看网络连接看是否有连接其他机器的8080等端口,尝试ping -n 1 -a ip
-
是否 有hostname类似于proxy的机器
通过注册表得到:
REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer #通过pac文件自动代理情况 REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL
从pac文件中查看其代理服务器IP及端口,然后通过curl来确定:
curl www.baidu.com #不通,不走代理无法访问到外网 curl -x proxy-ip:8080 www.baidu.com #通,通过代理能访问到外网
内网域环境搭建
系统
Windows Server 2012 R2 域控 10.10.10.10
Windows Server 2008 R2 域成员 10.10.10.30
Windows 7 域成员 10.10.10.20
域成员登录:如WEB@mee.local
内网信息收集
用户信息收集
查看本机用户列表 net user 获取本地管理员信息 net localgroup administrators 查看当前在线用户 quser quser user query user || qwinsta 查看当前用户在目标系统中的具体权限 whoami /all 查看当前权限 whoami && whoami /priv 查看当前机器中所有的组名,了解不同组的职能,如,IT,HR,ADMIN,FILE net localgroup
系统信息收集
#查询网络配置信息。进行IP地址段信息收集 ipconfig /all #查询操作系统及软件信息 systeminfo | findstr /B /C:"OS Name" /C:"OS Version" # 英文系统 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #中文系统 #查看当前系统版本 wmic OS get Caption,CSDVersion,OSArchitecture,Version #查看系统体系结构 echo %PROCESSOR_ARCHITECTURE% #查询本机服务信息 wmic service list brief #查看安装的软件的版本、路径等 wmic product get name, version powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name, version" #查询进程信息 tasklist wmic process list brief #查看启动程序信息 wmic startup get command,caption #查看计划任务 at(win10之前) schtasks /query /fo LIST /v(win10) #列出或断开本地计算机与所连接的客户端的对话 net session #查看远程连接信息 cmdkey /l #查看补丁列表 systeminfo | findstr KB #查看补丁的名称、描述、ID、安装时间等 wmic qfe get Caption,Description,HotFixID,InstalledOn #查看杀软 WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List #查看本地密码策略 net accounts #查看hosts文件: Linux:cat /etc/hosts Windows:type c:\Windows\system32\drivers\etc\hosts
命令太多可通过windows的批处理脚本,bat文件和vbs文件 wmic_info整合收集: https://codeload.github.com/Alex-null/wmic_info_gather/ 上传至目标执行即可生成out.html文件在下载到本地即可
防火墙信息收集
#关闭防火墙(Windows Server 2003 以前的版本) netsh firewall set opmode disable #关闭防火墙(Windows Server 2003 以后的版本) netsh advfirewall set allprofiles state off #查看防火墙配置(netsh命令也可以用作端口转发) netsh firewall show config #查看配置规则 netsh advfirewall firewall show rule name=all #wifi密码 netsh wlan show profile netsh wlan show profile name="EEFUNG" key=clear
其他信息收集
#回收站内容获取 FOR /f "skip=1 tokens=1,2 delims= " %c in ('wmic useraccount get name^,sid') do dir /a /b C:\$Recycle.Bin\%d\ ^>%c.txt cd C:\$Recycle.Bin\S-1-5-21-3845785564-1101086751-683477353-1001\ $I 开头的文件保存的是路径信息 $R 开头的文件保存的是文件内容 #Chrome历史记录和Cookie获取 %localappdata%\google\chrome\USERDA~1\default\LOGIND~1 %localappdata%\google\chrome\USERDA~1\default\cookies chrome的用户信息,保存在本地文件为sqlite 数据库格式 mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer #通过pac文件自动代理情况 REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获取远程端口
msf自动信息收集
#scraper Meterpreter > run scraper /root/.msf4/logs/scripts/scraper #winenum Meterpreter > run winenum /root/.msf4/logs/scripts/winenum 架构信息类收集-网络、用户、域控等 网络信息收集 #查看本机所有的tcp,udp端口连接及其对应的pid netstat -ano #查看本机所有的tcp,udp端口连接,pid及其对应的发起程序 netstat -anob #查看本机共享列表和可访问的域共享列表 (445端口) net share wmic share get name,path,status #查看路由表和arp缓存 route print arp -a ipconfig /all 通过查询网络信息判断是否在域内 nslookup + dns后缀 whoami /all 用户权限,获取SID net config workstation 登录信息 net user 本地用户 net localgroup 本地用户组 net user /domain 或 wmic useraccount get /all 获取域用户信息 net group /domain 获取域用户组信息(Enterprise Admins组权限最大) wmic useraccount get /all 涉及域用户详细信息 net group "Domain Admins" /domain 查询域管理员账户 net group "Enterprise Admins" /domain 查询域系统管理员用户组 net group "Domain Controllers" /domain 查询域控制器 net view /domain:域名 查询域内所有计算机 net group "domain computers" /domain 查询所有域成员列表 net accounts /domain 查看域管理策略 net localgroup administrators /domain 登录本机的域管理员 nslookup -q=ns de1ay.com 查看域内DNS服务器定位域控 权限说明 Domain Admins : 域管理员组 Domain Computers : 域内机器 Domain Controllers :域控制器 Domain Guest : 域访客,权限较低 Domain User : 域用户 Enterprise Admins : 企业系统管理员用户 dsquery信息收集 dsquery工具一般在域控上才有,不过你可以上传一个dsquery dsquery computer 查看当前域内的所有机器 dsquery user 查看当前域中的所有账户名 dsquery group 查看当前域内的所有组名 dsquery site 查看域内所有的web站点 dsquery server 查看当前域中的服务器(一般结果只有域控的主机名) dsquery user domainroot -name admin* -limit 240 查询前240个以admin开头的用户名 nltest /domain_trusts 查询域内信任关系 nltest /DCLIST:xs 查看域控制器的机器名
探测域内存活主机
Netbios协议探测 Netbios简介: IBM公司开发,主要用于数十台计算机的小型局域网。该协议是一种在局域网上的程序可以使用的应用 程序编程接口(API),为程序提供了请求低级服务的同一的命令集,作用是为了给局域网提供网络以及 其他特殊功能。系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名-——特指基于 NETBIOS协议获得计算机名称——解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS 协议可以方便地实现消息通信及资源的共享 Nbtscan 项目地址:nbtscan - NETBIOS nameserver scanner 使用nbtscan扫描本地或远程TCP/IP网络上开放的NetBIOS名称服务器 输出的结果第一列为IP地址,第二列为机器名和所在域的名称,第三列即最后一列为及其所开启的服务 的列表 Windows: nbtscan.exe –m 10.10.10.0/24 nbtstat –n Linux: nbtscan -r 10.10.10.0/24