900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

时间:2018-12-23 15:11:18

相关推荐

《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

目录

前言一、收集本机信息1、手动搜集(1)查询网络配置(2)查询操作系统及软件的信息(3)查询本机服务信息(4)查询进程列表(5)查看启动程序信息(6)查看计划任务(7)查看主机开机时间(8)查询用户列表(9)列出或断开本地计算机与所连接的客户端之间的会话(10)查询端口列表(11)查询补丁列表(12)查询本机共享列表(13)查询路由表及所有可用接口的ARP缓存表(14)查询防火墙相关配置(15)查看代理配置情况(16)查询并开启远程连接服务2、自动搜集3、Empire下的主机信息收集二、查询当前权限1、查看当前权限2、查询指定用户的详细信息三、判断是否存在域1、查看dns服务器2、查看系统详细信息3、查询当前登录域及登录用户信息4、判断主域四、探测域内存活主机1、NetBIOS快速探测2、使用ICMP探测3、ARP扫描4、通过常规的TCP/UDP端口扫描探测内网五、扫描域内端口1、Telnet2、S扫描器3、Metasploit端口扫描4、其他六、收集域内信息七、查找域控制器八、获取域内用户和管理员信息1、查询所有域用户列表2、查询域管理员用户组九、定位域管理员1、psloggedon.exe2、PVEFindADUser.exe3、NetView.exe4、PowerView5、Empire6、Nmap的NSE脚本十、查找域管理进程1、本机检查2、查询域控的域用户会话十一、利用powershell收集域信息十二、敏感数据防护1、资料、数据、文件的定位流程2、核心业务机器3、敏感信息十三、内网划分及拓扑结构结语

前言

本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,是第二章内网信息收集,主要介绍了当前主机信息搜集、域内存活主机探测、域内端口扫描、域内用户和管理员权限的获取、如何获取域内网段划分信息和拓扑架构分析等,并介绍了域分析工具BloodHound的使用(本篇笔记没记该工具)

我是谁?——对当前机器角色的判断这是哪?——对当前机器所处网络环境的拓扑结构进行分析和判断我在哪?——对当前机器所处区域的判断

一、收集本机信息

1、手动搜集

(1)查询网络配置

ipconfig /all

(2)查询操作系统及软件的信息

查看操作系统和版本信息

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"//适用于英文的操作系统,中文的:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"

查看系统体系结构

echo %PROCESSOR_ARCHITECTURE%

查看安装的软件及版本、路径等

wmic product get name,version

Powershell版本:

powershell.exe "Get-WmiObject -class Win32_Product | Select-Object -Property name,Version"

(3)查询本机服务信息

wmic service list brief

(4)查询进程列表

tasklist//或者wmic process list brief

常见杀毒软件进程如下:

360sd.exe360tray.exeZhuDongFangYu.exeKSafeTray.exeSafeDogUpdateCenter.exeMcAfee McShield.exeegui.exe //NOD32AVP.EXE //卡巴斯基avguard.exe//小红伞bdagent.exe//BitDefender

(5)查看启动程序信息

wmic startup get command,caption

(6)查看计划任务

schtasks /query /fo LIST /v

(7)查看主机开机时间

net statistics workstation

(8)查询用户列表

net user//获取本地管理员组成员:net localgroup adinistrators//查看当前再线用户query user || qwinsta

(9)列出或断开本地计算机与所连接的客户端之间的会话

net session

(10)查询端口列表

netstat -ano

(11)查询补丁列表

systeminfo

使用wmic命令查看安装在系统中的补丁:

wmic qfe get Caption,Description,HotFixID,InstalledOn

(12)查询本机共享列表

net share//wmic:wmic share get name,path,status

(13)查询路由表及所有可用接口的ARP缓存表

route printarp -a

(14)查询防火墙相关配置

关闭防火墙

//windows server 之前netsh firewall set opmode disable//Windows server 之后netsh advfirewall set allprofile state off

查看防火墙配置

netsh firewall show config

修改防火墙配置

windows server 之前允许指定程序全部连接

netsh firewall add allowedprogram c:\nc.exe "allow nc" enable

windows server 之后的版本

//允许制定程序退出netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="c:\nc.exe"//允许指定程序退出netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C:\nc.exe"//允许3389端口放行netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow

自定义防火墙日志的存储位置

netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"

(15)查看代理配置情况

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

(16)查询并开启远程连接服务

查看远程连接端口

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber

在Windows server 中开启3389

wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1

在Windows server 和中

wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1//修改注册表方式reg query "HKLM\System\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

2、自动搜集

WMIC(Windows Management Instrumentation Command-Line,Windows管理工具命令行)是最有用的Windows命令行工具

Windows XP的低权限用户不允许访问WMICWindows7以上版本的低权限用户允许访问WMIC并执行相关查询操作不仅可以管理本地计算机,还可以管理同一域内的所有计算机(需要一定权限),而且在被管理的计算机上不可事先安装WMIC

书里提供了一个使用WMIC的脚本,执行上一节所有命令,并将结果写入HTML文件:

for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.htmlwmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.htmlwmic USERACCOUNT list full /format:"%var%" >> out.htmlwmic group list full /format:"%var%" >> out.htmlwmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.htmlwmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.htmlwmic netuse list full /format:"%var%" >> out.htmlwmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.htmlwmic startup get Caption,Command,Location,User /format:"%var%" >> out.htmlwmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.htmlwmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.htmlwmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

3、Empire下的主机信息收集

Empire提供了用于收集主机信息的模块

查看本机用户、域组成员、密码设置时间、剪贴板内容、系统基本信息、网络适

配器信息、共享信息等:

usemodule situational_awareness/host/winenumexecute

有管理员权限的情况下,查看目标主机事件日志、应用程序控制策略日志、RDP登录信息、PowerShell脚本运行和保存的信息等:

usemodule situational_awareness/host/computerdetails

二、查询当前权限

1、查看当前权限

whoami /all

有三种情况:本地普通用户、本地管理员用户、域内用户

如果当前内网中存在域,那么本地普通用户只能查询本机相关信息,不能查询域内信息;而本地管理员用户和域内用户可以查询域内信息。

域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无需额外输入账号和密码。

本地管理员Administrator权限可以直接提升为System权限(使用PsExec等),因此,在域中,除普通用户外,所有的机器都有一个机器用户(用户名为机器名加上$)。在本质上,机器的system用户对应的就是域里面的机器用户。所以,使用System权限也可以运行域内的查询命令。

2、查询指定用户的详细信息

net user xxx /domain

三、判断是否存在域

1、查看dns服务器

域控制器和DNS服务器是否在同一台服务器上?(使用nslookup反向解析)

ipconfig /all//将查看到的DNS服务器用nslookup进行解析nslookup dc.test.local

2、查看系统详细信息

systeminfo中的域即域名、登陆服务器指的是域控制器。

systeminfo | findstr /B /C:"登录服务器"//如果结果不为"WORKGROUP"则主机为域主机

3、查询当前登录域及登录用户信息

net group workstation

4、判断主域

net time /domain//命令用于查看域内时间,同时也可以查看域控制器

三种情况:

错误5:存在域,但当前用户不是域用户显示信息:存在域,且当前用户是域用户找不到域控制器:不存在域

四、探测域内存活主机

1、NetBIOS快速探测

NetBIOS是局域网程序使用的一种API,为程序提供了请求低级别服务的统一的命令集。NetBIOS也是计算机的标识名,主要用于局域网中计算机的互访。

使用nbtscan(/tools/nbtscan.html)

nbt.exe 192.168.1.0/20

2、使用ICMP探测

对每个IPping

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

3、ARP扫描

通过ARPscan工具扫描探测内网

arp.exe -t 192.168.1.0/20

Empire中的ARPscan模块

usemode situational_awareness/network/arpscanexecute

Nishang中的Invoke-ARPScan.ps1

powershell.exe -exec bypass -Command "& (Import-module c:\windows\temp\Invoke-ARPscan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/20)" >> c:\windows\temp\log.txttype c:\windows\temp\log.txt

4、通过常规的TCP/UDP端口扫描探测内网

上传ScanLine进行扫描:

scanline -h -t 22,80-90,110,445 -u 53,161 -O c:\windows\temp\log.txt -p 192.168.1.1-254 /b

五、扫描域内端口

需要关注的点:

端口的Banner信息端口上运行的服务常见应用的默认端口

1、Telnet

命令类似于

telnet DC 22

2、S扫描器

S扫描器是早期的快速端口扫描工具

支持大网段扫描特别适合运行在Windows Sever 以下版本的操作系统保存在result.txt中

S exe TCP 192.168.1.1 192.168.1.254 80,8080,3839 256./Banner /save

3、Metasploit端口扫描

Metasploit不用多说

use auxiliary/scanner/portscan/tcpset ports 1-1000set RHOST 192.168.1.1set THREADS 10run

4、其他

还可以使用如PowerSploit、NiShang的Invoke-portscan脚本

然后一些漏洞的信息可以参考

/bidhttps://www.exploit-/

六、收集域内信息

本节的域内查询命令在本质上都是通过LDAP协议到域控制器上进行查询的,故需要域用户的权限,本地用户无法运行(除非是System用户)

在默认情况下,Domain Admins 和 Enterprise Admins 对域内所有域控制器有完全控制权限

命令如下:

net view /domain//查询域net view /domain:HACKE//查询域内所有计算机net group /domain//查询域内所有用户组列表net group "domain computers" /domain//查询所有域成员计算机列表net accounts /domain//获取域内密码信息nltest /domain_trusts//域内信任信息

七、查找域控制器

命令如下:

nltest /DCLIST:hacke//查看域控制器的机器名net time /domain//查看当前时间nslookup -type=SRV _ldap._tcp//查看域控制器的主机名net group "Domain Controllers" /domain//查看域控制器组netdom query pdc//查看主控制器

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

1、查询所有域用户列表

//查询所有域用户列表net user /domain//获取域内用户的详细信息wmic useraccount get /all//查看存在的用户,但是这个只能在域控或者安装了对应服务的主机使用,否则会提示命令不存在dsquery user//查找目录中的计算机dsquery computer//查询本地管理员组用户,域内Domain Admins组中的用户默认为域内机器的本地管理员用户net localgroup administrators

2、查询域管理员用户组

//查询域管理员用户组net group "domain admins" /domain//查询管理员用户组net group "Enterprise Admins" /domain

九、定位域管理员

在内网中,通常会部署大量的网络安全系统和设备,例如IDS、IPS、日志审计、安全网关、反病毒软件等。

在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。也就是说,当计算机被添加到域中,成为域的成员主机后,系统会自动将域管理员组添加到本地系统管理员组中。因此,域管理员组的成员均可访问本地计算机,且具备完全控制权限。

在获取了Windows域中的普通权限在进行横向渗透时,需要知道域内用户登录的位置,是否是任何系统/主机的本地管理员,以及所属组等信息。能够使用的工具有:psloggedon.exe、PVEFindADUser.exe、netness.exe、hunter、NetView、PowerView。

1、psloggedon.exe

能够通过此工具查看远程计算机的资源,也就是说能够查看目标主机有哪些账户在登录状态

下载地址:/zh-cn/sysinternals/downloads/psloggedon

psloggedon.exe \\DC

2、PVEFindADUser.exe

PVEFindADUser能够用于查找活动目录用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户:本地用户、通过RDP登录的用户、用于运行服务和计划任务的用户。(这个工具需要.NET 3.5)

Windows Server 安装.NET 3.5可能不成功,需要指定安装源:/soft/921507.html

下载地址:/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn

PVEFindADUser.exe <参数>

参数:

-h:显示帮助信息-u:检查程序是否有新版本-current[“username”]:如果仅指定了-current参数,将获取目标计算机上当前登录的所有用户;如果指定了用户名(Domain\Usemame),则显示该用户登录的计算机-last[“username”]:如果仅指定了-last参数,将获取目标计算机的最后的登录用户;如指定了用户名(Domain\Usemame),则显示此用户上次登录的计算机。根据网络的安全策略,可能会隐藏最后的登录用户的用户名,此时使用该工具可能无法得到该用户名-noping:阻止该工具在尝试获取用户登录信息之前对目标计算机执行ping命令-taget:可选参数,用于指定要查询的主机。如果未指定此参数,将查询当前域中的所有主机;如果指定了此参数,则后跟由逗号分隔的主机名列表

3、NetView.exe

NetView是一个枚举工具,使用WinAPI枚举系统,利用NetSessionEnum找寻登陆会话,利用NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登录的用户。同时还能够查询共享入口和有价值的用户。

下载地址:/mubix/netview

netview.exe <参数>

参数:

-h:显示帮助信息-f aaa.txt:指定要提取主机列表的文件-e aaa.txt:指定要排除的主机名的文件-o aaa.txt:将所有输出重定向到指定的文件-d aaa.txt:指定要提取主机列表的域°如果没有指定’则从当前域中提取主机列表-g group:指定搜索的组名。如果没有指定,则在Domain Admins组中搜索-c:对已找到的共享目录/文件的访问权限进行检查

4、PowerView

PowerView是—款PowerShell脚本,提供了辅助定位关键用户的功能

下载地址:/PowerShellEmpire/PowerTools/tree/master/PowerView

5、Empire

Empire中也存在此类型的脚本:

usemodule situational_awareness/network/powerview/user_hunterexecute

6、Nmap的NSE脚本

通过Nmap的NSE脚本获取远程机器的登陆会话

smb-enum-sessions.nse获取域内主机的用户登录会话,查看当前是否有用户登录,无需管理员权限

smb-enum-domains.nse对域控制器进行信息收集,可以获取主机信息用户、可使用密码策略的用户等smb-enum-users.nse可以使用此脚本对域控进行扫描

下载地址:/nsedoc/scripts/smb-enum-sessions.html

十、查找域管理进程

在获取了管理员权限的系统中寻找域管理员登录进程,进而搜集域管理员的凭据

一个假设情况:

渗透测试人员在某个内网环境中获得了一个域普通用户的权限,首先通过各种方法获得当前服务器的本地管理员权限,然后分析当前服务器的用户登录列表及会话信息,知道哪些用户登陆了这台服务器。如果渗透测试人员通过分析发现,可以获取权限的登录用户都不是域管理员账户,同时没有域管理员组的用户登录这台服务器,就可以使用另一个账号并寻找该账号在内网的哪台机器上具有管理权限,再枚举这台机器上的登录用户,然后继续进行渗透测试,直至找到一个可以获取域管理员权限的有效路径为止。

有一篇参考:五种寻找 “Domain Admin” 运行的进程的方法

1、本机检查

//获取域管理员列表net group "Domain Admins" /domain//列出本机的所有进程和进程用户tasklist /v

2、查询域控的域用户会话

//查询域控列表net group "Domain Controllers" /domain//收集域管理员列表net group "Domain Admins" /domain//收集所有活动域的会话列表netsess -h

然后可以用GetDomainAdmms(GDA)批处理脚本:

@echo offclsREM #######################################################REM Author and StuffREM #######################################################REM Script Name: Get Domain Admins (GDA)REM Author: Scott Sutherland (nullbind) <scott.sutherland@>REM Publish Date: 12/5/REM #######################################################REM Shout Outz!REM #######################################################REM Thank you Mark Beard (pacmandu) <pacmandu@> and humble-desserREM for your updating the script to accept multipe part domain names.REM #######################################################REM Script SummaryREM #######################################################REM The primary goal of this script is to locate systems REM running processes with a Domain Admin account so that penetestersREM can conduct cleaner privilege escalation in Active Directory domains. REM This way pentesters dont have to spray shells all over the place withREM metasploit+psexec+meterpreter and scrape for admin tokens. :)REM #######################################################REM Check Variables REM #######################################################REM - Target DomainIF EXIST target del targetecho %userdnsdomain% | gawk -F "." "{print $0}" > targetSET /p target_domain= < targetDEL targetREM - Checking total number of words in a given domain name and save on totalvar IF EXIST num_words del num_wordsecho %userdnsdomain% | gawk -F "." "{ total = total + NF }; END { print total+0 }" > num_wordsSET /p totalvar= < num_wordsDEL num_wordsREM - Define all variables to be used later (e.g: var1=hacking, var2=lab, var3=local)IF EXIST domainname del domainnameFOR /L %%G IN (1,1,%totalvar%) DO (echo %userdnsdomain% | gawk -F "." "{print $%%G}" > %%GSET /p var%%G= < %%Ggawk "BEGIN { while (a++<1) s=s \"dc=%%var%%G%%\"; print s }" >> domainnameDEL %%G )REM - Parsing the domain variables to be insert into domain_parameters (e.g: dc=%var1%,dc=%var2%,dc=%var3%)IF EXIST domainname_var del domainname_vargawk "NR==1{x=$0;next}NF{x=x\",\"$0}END{print x}" domainname > domainname_varDEL domainnameREM - Fix parsing issuesIF EXIST domainname_var2 del domainname_var2SET /p temp_var= < domainname_var@echo %temp_var% | sed "s/'//" > domainname_var2SET /p domain_parameter= < domainname_var2DEL domainname_var DEL domainname_var2REM #######################################################REM - Preparing arguments passed by "-c" (custom) flag REM #######################################################IF EXIST c_target del c_target@echo %2 > c_targetSET /p c_target_domain= < c_targetDEL c_targetIF EXIST c_num_words del c_num_words@echo %2 | gawk -F "." "{ total = total + NF }; END { print total+0 }" > c_num_wordsSET /p c_totalvar= < c_num_wordsDEL c_num_wordsIF EXIST c_domainname del c_domainnameFOR /L %%G IN (1,1,%c_totalvar%) DO (echo %2 | gawk -F "." "{print $%%G}" > %%GSET /p c_var%%G= < %%Ggawk "BEGIN { while (a++<1) s=s \"dc=%%c_var%%G%%\"; print s }" >> c_domainnameDEL %%G )REM - Parsing the domain variables to be insert into domain_parameters (e.g: dc=%var1%,dc=%var2%,dc=%var3%)IF EXIST c_domainname_var del c_domainname_vargawk "NR==1{x=$0;next}NF{x=x\",\"$0}END{print x}" c_domainname > c_domainname_varDEL c_domainnameREM - Fix parsing issuesIF EXIST c_domainname_var2 del c_domainname_var2SET /p c_temp_var= < c_domainname_var@echo %c_temp_var% | sed "s/'//" > c_domainname_var2SET /p c_domain_parameter= < c_domainname_var2DEL c_domainname_var DEL c_domainname_var2if [%1] equ [] goto :SYNTAXif [%1] equ [-h] goto :SYNTAXif [%1] equ [-c] goto :CUSTOMif [%1] equ [-a] goto :CURRENTif [%1] equ [-l] goto :DUMPUSERSLDAPif [%1] equ [-s] goto :DUMPUSERSSMBgoto :endREM #######################################################:SYNTAXecho ------------------------------------------------------------echo GET DOMAIN ADMIN (GDA)echo ------------------------------------------------------------echo This script can be used to enumerate users that exist in echo the current machines domain and locate systems running echo processes as a domain adminecho ------------------------------------------------------------echo Syntax: echo -l Dump list of users from current domain using LDAPecho -s dumps list of users from current domain using SMB (enum)echo -c Get list of DA sessions - custom domainecho -a Get list of DA sessions - local machine's domainecho ------------------------------------------------------------REM #######################################################REM Check for require binariesREM #######################################################IF NOT EXIST NetSess.exe GOTO missingfilesIF NOT EXIST grep.exe GOTO missingfilesIF NOT EXIST gawk.exe GOTO missingfilesIF NOT EXIST adfind.exe GOTO missingfilesIF NOT EXIST uniq.exe GOTO missingfilesIF NOT EXIST findpdc.exe GOTO missingfilesgoto end:missingfilesecho ERRORecho ----------------------------------------echo The following required files echo are missing:echo - NetSess.exe echo - grep.exe echo - gawk.exe echo - adfind.exe echo - uniq.exeecho - findpdc.exegoto :end:DUMPUSERSLDAPIF EXIST users_ldap.txt del users_ldap.txtecho HERE:%domain_parameter%@adfind -b %domain_parameter% -f "objectcategory=user" -gc | grep -i "sAMAccountName:" | gawk -F ":" "{print $2}" | gawk -F " " "{print $1}"| sort > users_ldap.txtecho .echo .echo Results have been exported to users_ldap.txtgoto :END:DUMPUSERSSMBfindpdc %userdomain% 1 >> pdc1.txtgawk -F "\\" "{print $3}" pdc1.txt > pdc.txtSET /P PDC= < pdc.txtdel pdc1.txtdel pdc.txtenum.exe -N %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $1}" >> users_smb1.txtenum.exe -N %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $2}" >> users_smb1.txtenum.exe -N %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $3}" >> users_smb1.txtenum.exe -N %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $4}" >> users_smb1.txtcat users_smb1.txt | grep -v "^$" | uniq | sort > users_smb.txtdel users_smb1.txtusers_smb.txtgoto :end:CUSTOMIF EXIST datargets.txt del datargets.txtREM ####################################################### REM GET LIST OF DOMAIN CONTROLLERS WITH ADFINDREM ####################################################### @adfind -b -sc dcdmp %c_domain_parameter% -gc | grep -i ">name:" | gawk -F " " "{print $2}" | sort | uniq >> dcs.txt 2>&1echo -----------------------------------------------echo Getting list of Domain Controllers...echo -----------------------------------------------REM ####################################################### REM GET LIST OF DOMAIN ADMINS WITH ADFINDREM ####################################################### echo -----------------------------------------------echo Getting list of Domain Admins...echo -----------------------------------------------@adfind -b %c_domain_parameter% -f name="Domain Admins" -gc > myadmins1.txtgrep -i "member:" myadmins1.txt > myadmins2.txtsed -e s/^>member:" "CN=/'/g myadmins2.txt > myadmins3.txtsed -e s/,/',/g myadmins3.txt > myadmins4.txttype myadmins4.txt | gawk -F "," "{print $1}" > myadmins5.txtsed s/'//g myadmins5.txt > dcadmintmp.txtREM DEL myadmins*.txtREM PARSE LIST OF DOMAIN ADMINSFOR /f "tokens=1 delims=" %%a IN ('type dcadmintmp.txt') do @adfind -b %c_domain_parameter% -f name="%%a" | grep -i "sAMAccountName" | sed -e s/^>sAMAccountName:" "//g >> dcadmins.txtDEL dcadmintmp.txtREM ####################################################### REM SCAN FOR ACTIVE DOMAIN ADMIN SESSIONS (NETSESS)REM ####################################################### echo -----------------------------------------------echo Getting list of Active Domain Admin Sessions...echo -----------------------------------------------for /f %%a in ('type dcs.txt') do NetSess.exe %%a >> mysessions.txt REM Identify domain admin sessionsfor /f %%a in ('type dcadmins.txt') do grep -i %%a mysessions.txt >> mysessions2.txtecho =============================>>datargets.txtecho TARGET DOMAIN>>datargets.txtecho ----------------------------->>datargets.txtecho %c_target_domain% >>datargets.txtecho _ >>datargets.txtgoto :report:CURRENTIF EXIST datargets.txt del datargets.txtREM ####################################################### REM GET LIST OF DOMAIN CONTROLLERS WITH ADFINDREM ####################################################### findpdc %userdomain% 1 >> pdc1.txtgawk -F "\\" "{print $3}" pdc1.txt > pdc.txtSET /P PDC= < pdc.txtdel pdc1.txtdel pdc.txt@adfind -b -sc dcdmp %domain_parameter% -f name=%PDC% -gc | grep -i ">name:" | gawk -F " " "{print $2}" | sort | uniq >> dcs.txt 2>&1echo -----------------------------------------------echo Getting list of Domain Controllers...echo -----------------------------------------------REM ####################################################### REM GET LIST OF DOMAIN ADMINS WITH ADFINDREM ####################################################### echo -----------------------------------------------echo Getting list of Domain Admins...echo -----------------------------------------------@adfind -b %domain_parameter% -f name="Domain Admins" -gc > myadmins1.txtgrep -i "member:" myadmins1.txt > myadmins2.txtsed -e s/^>member:" "CN=/'/g myadmins2.txt > myadmins3.txtsed -e s/,/',/g myadmins3.txt > myadmins4.txttype myadmins4.txt | gawk -F "," "{print $1}" > myadmins5.txtsed s/'//g myadmins5.txt > dcadmintmp.txtREM del myadmins*.txtREM PARSE LIST OF DOMAIN ADMINSFOR /f "tokens=1 delims=" %%a IN ('type dcadmintmp.txt') do @adfind -b %domain_parameter% -f name="%%a" | grep -i "sAMAccountName" | sed -e s/^>sAMAccountName:" "//g >>dcadmins.txtDEL dcadmintmp.txtREM ####################################################### REM SCAN FOR ACTIVE DOMAIN ADMIN SESSIONS (NETSESS)REM ####################################################### echo -----------------------------------------------echo Getting list of Active Domain Admin Sessions...echo -----------------------------------------------FOR /f %%a in ('type dcs.txt') do NetSess.exe %%a >> mysessions.txt REM Identify domain admin sessionsFOR /f %%a in ('type dcadmins.txt') do grep -i %%a mysessions.txt >> mysessions2.txtecho =============================>>datargets.txtecho TARGET DOMAIN>>datargets.txtecho ----------------------------->>datargets.txtecho %userdnsdomain% >>datargets.txtecho _ >>datargets.txt:reportREM ####################################################### REM PRINT REPORTREM #######################################################echo .echo .echo =============================>>datargets.txtecho Domain Controllers >>datargets.txtecho ----------------------------->>datargets.txtecho =============================echo Domain Controllersecho -----------------------------uniq dcs.txt | sort >> datargets.txtuniq dcs.txt | sortecho =============================echo Domain Adminsecho -----------------------------echo _ >>datargets.txtecho =============================>>datargets.txtecho Domain Admins>>datargets.txtecho ----------------------------->>datargets.txtuniq dcadmins.txt >>datargets.txtuniq dcadmins.txtdel dcadmins.txtecho _ >>datargets.txt echo =============================>>datargets.txtecho Active Domain Admin Sessions >>datargets.txtecho =============================>>datargets.txtecho =============================echo Active Domain Admin Sessions echo -----------------------------uniq mysessions2.txt | sort >> datargets.txtuniq mysessions2.txtREM ## If the user uploads GDA via meterpreter there is no point to open datargets.txt on notepadREM -- start datargets.txtDEL myadmin*.txtecho .echo .echo Results have been exported to datargets.txtDEL mysessions2.txtDEL mysessions.txtDEL dcs.txt:end

十一、利用powershell收集域信息

使用PowerView

下载地址:

/shigophilo/tools/blob/master/PowerView.ps1/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1

一些使用:

powerview使用记录powerview使用小记

十二、敏感数据防护

1、资料、数据、文件的定位流程

内网数据防护首先要熟悉攻击者获取数据的流程

在实际的网络环境中,攻击者主要通过各种恶意方法来定位公司内部各相关人员的机器,从而获得资料,数据文件,流程如下:

定位内部人事组织结构在内部人事组织结构中寻找需要监视的人员定位相关人员的机器监视相关人员存放文档的位置列出存放文档的服务器的目录

2、核心业务机器

高级管理人员、系统管理员、财务/人事/业务人员的个人计算机产品管理系统服务器办公系统服务器财务应用系统服务器核心产品源码服务器(IT公司通常会架设自己的SVN或者GIT服务器)数据库服务器文件服务器、共享服务器电子邮件报务器网络监控系统服务器其他服务器(分公司、工厂)

3、敏感信息

站点源码备份文件数据库备份文件等各类数据库的Web管理人口,例如phpMyAdmin、Adminer测览器密码和测览器Cookie其他用户会话、3389和ipc$连接记录、“回收站”中的信息等Windows无线密码网络内部的各种账号和密码,包括电子邮箱、VPN、FTP、TeamView等

十三、内网划分及拓扑结构

分析目标服务器所使用的的Web服务器、后端脚本、数据库、系统平台等。

常见Web架构:

ASP + Access + IIS 5.0/6.0 + Windows Server ASPX + MSSQL + IIS 7.0/7.5 + Windows Server PHP + MySQL + IIS、Apache、NginxJSP + MSSQL、ORACLE + Tomcat

内网通常分为DMZ、办公区和核心区(生产区),不展开

结语

对内网信息搜集的流程和关注点做了个了解

主要是域相关

然后放一个工具

/BloodHoundAD/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。