前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网信息收集

内网信息收集

作者头像
红客突击队
发布2022-09-29 21:03:57
9340
发布2022-09-29 21:03:57
举报
文章被收录于专栏:kayden

内网信息收集

前言

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

我是谁?——对当前机器角色的判断

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

我在哪?——对当前机器所处区域的判断

一、收集本机信息

1、手动搜集

(1)查询网络配置

代码语言:javascript
复制
ipconfig /all

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

查看操作系统和版本信息

代码语言:javascript
复制
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
//适用于英文的操作系统,中文的:
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"

查看系统体系结构

代码语言:javascript
复制
echo %PROCESSOR_ARCHITECTURE%

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

代码语言:javascript
复制
wmic product get name,version

Powershell版本:

代码语言:javascript
复制
powershell.exe "Get-WmiObject -class Win32_Product | Select-Object -Property name,Version"

(3)查询本机服务信息

代码语言:javascript
复制
wmic service list brief

(4)查询进程列表

代码语言:javascript
复制
tasklist
//或者
wmic process list brief

常见杀毒软件进程如下:

代码语言:javascript
复制
360sd.exe
360tray.exe
ZhuDongFangYu.exe
KSafeTray.exe
SafeDogUpdateCenter.exe
McAfee McShield.exe
egui.exe //NOD32
AVP.EXE  //卡巴斯基
avguard.exe    //小红伞
bdagent.exe    //BitDefender

(5)查看启动程序信息

代码语言:javascript
复制
wmic startup get command,caption

(6)查看计划任务

代码语言:javascript
复制
schtasks /query /fo LIST /v

(7)查看主机开机时间

代码语言:javascript
复制
net statistics workstation

(8)查询用户列表

代码语言:javascript
复制
net user
//获取本地管理员组成员:
net localgroup adinistrators
//查看当前再线用户
query user || qwinsta

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

代码语言:javascript
复制
net session

(10)查询端口列表

代码语言:javascript
复制
netstat -ano

(11)查询补丁列表

代码语言:javascript
复制
systeminfo

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

代码语言:javascript
复制
wmic qfe get Caption,Description,HotFixID,InstalledOn

(12)查询本机共享列表

代码语言:javascript
复制
net share
//wmic:
wmic share get name,path,status

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

代码语言:javascript
复制
route print
arp -a

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

关闭防火墙

代码语言:javascript
复制
//windows server 2003之前
netsh firewall set opmode disable
//Windows server 2003之后
netsh advfirewall set allprofile state off

查看防火墙配置

代码语言:javascript
复制
netsh firewall show config

修改防火墙配置

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

代码语言:javascript
复制
 netsh firewall add allowedprogram c:\nc.exe "allow nc" enable

windows server 2003之后的版本

代码语言:javascript
复制
    //允许制定程序退出
    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

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

代码语言:javascript
复制
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"

(15)查看代理配置情况

代码语言:javascript
复制
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

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

查看远程连接端口

代码语言:javascript
复制
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber

在Windows server 2003中开启3389

代码语言:javascript
复制
wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1

在Windows server 2008和2012中

代码语言:javascript
复制
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的低权限用户不允许访问WMIC
  • Windows7以上版本的低权限用户允许访问WMIC并执行相关查询操作
  • 不仅可以管理本地计算机,还可以管理同一域内的所有计算机(需要一定权限),而且在被管理的计算机上不可事先安装WMIC

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

代码语言:javascript
复制
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.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

3、Empire下的主机信息收集

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

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

代码语言:javascript
复制
usemodule situational_awareness/host/winenum
execute

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

代码语言:javascript
复制
usemodule situational_awareness/host/computerdetails

二、查询当前权限

1、查看当前权限

代码语言:javascript
复制
whoami /all

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

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

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

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

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

代码语言:javascript
复制
net user xxx /domain

三、判断是否存在域

1、查看dns服务器

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

代码语言:javascript
复制
ipconfig /all
//将查看到的DNS服务器用nslookup进行解析
nslookup dc.test.local

2、查看系统详细信息

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

代码语言:javascript
复制
systeminfo | findstr /B /C:"登录服务器"
//如果结果不为"WORKGROUP"则主机为域主机

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

代码语言:javascript
复制
net group workstation

4、判断主域

代码语言:javascript
复制
net time /domain
//命令用于查看域内时间,同时也可以查看域控制器

三种情况:

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

四、探测域内存活主机

1、NetBIOS快速探测

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

使用nbtscan(http://www.unixwiz.net/tools/nbtscan.html)

代码语言:javascript
复制
nbt.exe 192.168.1.0/20

2、使用ICMP探测

对每个IPping

代码语言:javascript
复制
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

3、ARP扫描

通过ARPscan工具扫描探测内网

代码语言:javascript
复制
arp.exe -t 192.168.1.0/20

Empire中的ARPscan模块

代码语言:javascript
复制
usemode situational_awareness/network/arpscan
execute

Nishang中的Invoke-ARPScan.ps1

代码语言:javascript
复制
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.txt
type c:\windows\temp\log.txt

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

上传ScanLine进行扫描:

代码语言:javascript
复制
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

命令类似于

代码语言:javascript
复制
telnet DC 22

2、S扫描器

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

  • 支持大网段扫描
  • 特别适合运行在Windows Sever 2013以下版本的操作系统
  • 保存在result.txt中
代码语言:javascript
复制
S exe TCP 192.168.1.1 192.168.1.254 80,8080,3839 256./Banner /save

3、Metasploit端口扫描

Metasploit不用多说

代码语言:javascript
复制
use auxiliary/scanner/portscan/tcp
set ports 1-1000
set RHOST 192.168.1.1
set THREADS 10
run

4、其他

还可以使用如PowerSploit、NiShang的Invoke-portscan脚本 然后一些漏洞的信息可以参考

  • http://www.securityfocus.com/bid
  • https://www.exploit-db.com/

六、收集域内信息

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

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

命令如下:

代码语言:javascript
复制
net view /domain
//查询域

net view /domain:HACKE
//查询域内所有计算机

net group /domain
//查询域内所有用户组列表

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

net accounts /domain
//获取域内密码信息

nltest /domain_trusts
//域内信任信息

七、查找域控制器

命令如下:

代码语言:javascript
复制
nltest /DCLIST:hacke
//查看域控制器的机器名

net time /domain
//查看当前时间

nslookup -type=SRV _ldap._tcp
//查看域控制器的主机名

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

netdom query pdc
//查看主控制器

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

1、查询所有域用户列表

代码语言:javascript
复制
//查询所有域用户列表
net user /domain

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

//查看存在的用户,但是这个只能在域控或者安装了对应服务的主机使用,否则会提示命令不存在
dsquery user

//查找目录中的计算机
dsquery computer

//查询本地管理员组用户,域内Domain Admins组中的用户默认为域内机器的本地管理员用户
net localgroup administrators

2、查询域管理员用户组

代码语言:javascript
复制
//查询域管理员用户组
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

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

下载地址:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/psloggedon

代码语言:javascript
复制
psloggedon.exe \\DC

2、PVEFindADUser.exe

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

Windows Server 2012安装.NET 3.5可能不成功,需要指定安装源:

https://www.cr173.com/soft/921507.html

下载地址:

https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn

代码语言:javascript
复制
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枚举登录的用户。同时还能够查询共享入口和有价值的用户。

下载地址:https://github.com/mubix/netview

代码语言:javascript
复制
netview.exe <参数>

参数:

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

4、PowerView

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

下载地址:

https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView

5、Empire

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

代码语言:javascript
复制
usemodule situational_awareness/network/powerview/user_hunter
execute

6、Nmap的NSE脚本

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

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

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

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

十、查找域管理进程

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

一个假设情况:

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

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

1、本机检查

代码语言:javascript
复制
//获取域管理员列表
net group "Domain Admins" /domain

//列出本机的所有进程和进程用户
tasklist /v

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

代码语言:javascript
复制
//查询域控列表
net group "Domain Controllers" /domain

//收集域管理员列表
net group "Domain Admins" /domain

//收集所有活动域的会话列表
netsess -h

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

代码语言:javascript
复制
@echo off
cls

REM #######################################################
REM Author and Stuff
REM #######################################################
REM Script Name: Get Domain Admins (GDA)
REM Author: Scott Sutherland (nullbind) <scott.sutherland@netspi.com>
REM Publish Date: 12/5/2011

REM #######################################################
REM Shout Outz!
REM #######################################################
REM Thank you Mark Beard (pacmandu) <pacmandu@gmail.com> and humble-desser
REM for your updating the script to accept multipe part domain names.

REM #######################################################
REM Script Summary
REM #######################################################
REM The primary goal of this script is to locate systems 
REM running processes with a Domain Admin account so that penetesters
REM can conduct cleaner privilege escalation in Active Directory domains.  
REM This way pentesters dont have to spray shells all over the place with
REM metasploit+psexec+meterpreter and scrape for admin tokens. :)

REM #######################################################
REM Check  Variables 
REM #######################################################
REM - Target Domain
IF EXIST target del target
echo %userdnsdomain% | gawk -F "." "{print $0}" > target
SET /p target_domain= < target
DEL target


REM - Checking total number of words in a given domain name and save on totalvar 
IF EXIST num_words del num_words
echo %userdnsdomain% | gawk  -F "." "{ total = total + NF }; END { print total+0 }" > num_words
SET /p totalvar= < num_words
DEL num_words

REM - Define all variables to be used later (e.g: var1=hacking, var2=lab, var3=local)
IF EXIST domainname del domainname
FOR /L %%G IN (1,1,%totalvar%) DO (echo %userdnsdomain% | gawk -F "." "{print $%%G}" > %%G
SET /p var%%G= < %%G
gawk "BEGIN { while (a++<1) s=s \"dc=%%var%%G%%\"; print s }" >> domainname
DEL %%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_var
gawk "NR==1{x=$0;next}NF{x=x\",\"$0}END{print x}" domainname > domainname_var
DEL domainname

REM - Fix parsing issues
IF EXIST domainname_var2 del domainname_var2
SET /p temp_var= < domainname_var
@echo %temp_var% | sed "s/'//" > domainname_var2
SET /p domain_parameter= < domainname_var2
DEL domainname_var 
DEL domainname_var2
 
REM #######################################################
REM - Preparing arguments passed by "-c" (custom) flag 
REM #######################################################

IF EXIST c_target del c_target
@echo %2 > c_target
SET /p c_target_domain= < c_target
DEL c_target

IF EXIST c_num_words del c_num_words
@echo %2 | gawk  -F "." "{ total = total + NF }; END { print total+0 }" > c_num_words
SET /p c_totalvar= < c_num_words
DEL c_num_words


IF EXIST c_domainname del c_domainname
FOR /L %%G IN (1,1,%c_totalvar%) DO (echo %2 | gawk -F "." "{print $%%G}" > %%G
SET /p c_var%%G= < %%G
gawk "BEGIN { while (a++<1) s=s \"dc=%%c_var%%G%%\"; print s }" >> c_domainname
DEL %%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_var
gawk "NR==1{x=$0;next}NF{x=x\",\"$0}END{print x}" c_domainname > c_domainname_var
DEL c_domainname

REM - Fix parsing issues
IF EXIST c_domainname_var2 del c_domainname_var2
SET /p c_temp_var= < c_domainname_var
@echo %c_temp_var% | sed "s/'//" > c_domainname_var2
SET /p c_domain_parameter= < c_domainname_var2
DEL c_domainname_var 
DEL c_domainname_var2


if [%1] equ [] goto :SYNTAX
if [%1] equ [-h] goto :SYNTAX
if [%1] equ [-c] goto :CUSTOM
if [%1] equ [-a] goto :CURRENT
if [%1] equ [-l] goto :DUMPUSERSLDAP
if [%1] equ [-s] goto :DUMPUSERSSMB


goto :end
REM #######################################################

:SYNTAX
echo ------------------------------------------------------------
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 admin
echo ------------------------------------------------------------
echo Syntax: 
echo -l Dump list of users from current domain using LDAP
echo -s dumps list of users from current domain using SMB (enum)
echo -c Get list of DA sessions - custom domain
echo -a Get list of DA sessions - local machine's domain
echo ------------------------------------------------------------
REM #######################################################
REM Check for require binaries
REM #######################################################
IF NOT EXIST NetSess.exe GOTO missingfiles
IF NOT EXIST grep.exe GOTO missingfiles
IF NOT EXIST gawk.exe GOTO missingfiles
IF NOT EXIST adfind.exe GOTO missingfiles
IF NOT EXIST uniq.exe GOTO missingfiles
IF NOT EXIST findpdc.exe GOTO missingfiles
goto end

:missingfiles
echo                  ERROR
echo ----------------------------------------
echo The following required files 
echo are missing:  
echo - NetSess.exe 
echo - grep.exe 
echo - gawk.exe  
echo - adfind.exe 
echo - uniq.exe
echo - findpdc.exe
goto :end

:DUMPUSERSLDAP
IF EXIST users_ldap.txt del users_ldap.txt
echo 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.txt
echo .
echo .
echo Results have been exported to users_ldap.txt
goto :END

:DUMPUSERSSMB
findpdc %userdomain% 1 >> pdc1.txt
gawk -F "\\" "{print $3}" pdc1.txt > pdc.txt
SET /P PDC= < pdc.txt
del pdc1.txt
del pdc.txt
enum.exe -N  %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $1}" >> users_smb1.txt
enum.exe -N  %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $2}" >> users_smb1.txt
enum.exe -N  %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $3}" >> users_smb1.txt
enum.exe -N  %PDC% | grep -v "getting" | grep -v "up..." | grep -v "\$" | grep -v "server:" | gawk -F " " "{print $4}" >> users_smb1.txt
cat users_smb1.txt | grep -v "^$" | uniq | sort > users_smb.txt
del users_smb1.txt
users_smb.txt

goto :end

:CUSTOM
IF EXIST datargets.txt del datargets.txt
REM ####################################################### 
REM GET LIST OF DOMAIN CONTROLLERS WITH ADFIND
REM ####################################################### 
@adfind -b -sc dcdmp %c_domain_parameter% -gc | grep -i ">name:" | gawk -F " " "{print $2}" | sort | uniq >> dcs.txt 2>&1
echo -----------------------------------------------
echo Getting list of Domain Controllers...
echo -----------------------------------------------

REM ####################################################### 
REM GET LIST OF DOMAIN ADMINS WITH ADFIND
REM ####################################################### 
echo -----------------------------------------------
echo Getting list of Domain Admins...
echo -----------------------------------------------
@adfind -b %c_domain_parameter% -f name="Domain Admins" -gc > myadmins1.txt
grep -i "member:" myadmins1.txt > myadmins2.txt
sed -e s/^>member:" "CN=/'/g myadmins2.txt > myadmins3.txt
sed -e s/,/',/g myadmins3.txt > myadmins4.txt
type myadmins4.txt | gawk -F "," "{print $1}" > myadmins5.txt
sed s/'//g myadmins5.txt > dcadmintmp.txt
REM DEL myadmins*.txt

REM PARSE LIST OF DOMAIN ADMINS
FOR /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.txt
DEL dcadmintmp.txt

REM ####################################################### 
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 sessions
for /f %%a in ('type dcadmins.txt') do grep -i %%a mysessions.txt >> mysessions2.txt

echo =============================>>datargets.txt
echo TARGET DOMAIN                >>datargets.txt
echo ----------------------------->>datargets.txt
echo %c_target_domain%            >>datargets.txt
echo _                            >>datargets.txt
goto :report


:CURRENT
IF EXIST datargets.txt del datargets.txt
REM ####################################################### 
REM GET LIST OF DOMAIN CONTROLLERS WITH ADFIND
REM ####################################################### 
findpdc %userdomain% 1 >> pdc1.txt
gawk -F "\\" "{print $3}" pdc1.txt > pdc.txt
SET /P PDC= < pdc.txt
del pdc1.txt
del pdc.txt
@adfind -b -sc dcdmp %domain_parameter% -f name=%PDC% -gc | grep -i ">name:" | gawk -F " " "{print $2}" | sort | uniq >> dcs.txt 2>&1
echo -----------------------------------------------
echo Getting list of Domain Controllers...
echo -----------------------------------------------

REM ####################################################### 
REM GET LIST OF DOMAIN ADMINS WITH ADFIND
REM ####################################################### 
echo -----------------------------------------------
echo Getting list of Domain Admins...
echo -----------------------------------------------
@adfind -b %domain_parameter% -f name="Domain Admins" -gc > myadmins1.txt
grep -i "member:" myadmins1.txt > myadmins2.txt
sed -e s/^>member:" "CN=/'/g myadmins2.txt > myadmins3.txt
sed -e s/,/',/g myadmins3.txt > myadmins4.txt
type myadmins4.txt | gawk -F "," "{print $1}" > myadmins5.txt
sed s/'//g myadmins5.txt > dcadmintmp.txt
REM del myadmins*.txt

REM PARSE LIST OF DOMAIN ADMINS
FOR /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.txt
DEL dcadmintmp.txt

REM ####################################################### 
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 sessions
FOR /f %%a in ('type dcadmins.txt') do grep -i %%a mysessions.txt >> mysessions2.txt

echo =============================>>datargets.txt
echo TARGET DOMAIN                >>datargets.txt
echo ----------------------------->>datargets.txt
echo %userdnsdomain%              >>datargets.txt
echo _                            >>datargets.txt

:report
REM ####################################################### 
REM PRINT REPORT
REM #######################################################
echo .
echo .
echo =============================>>datargets.txt
echo Domain Controllers           >>datargets.txt
echo ----------------------------->>datargets.txt
echo =============================
echo Domain Controllers
echo -----------------------------
uniq dcs.txt | sort >> datargets.txt
uniq dcs.txt | sort


echo =============================
echo Domain Admins
echo -----------------------------
echo _                            >>datargets.txt
echo =============================>>datargets.txt
echo Domain Admins             >>datargets.txt
echo ----------------------------->>datargets.txt
uniq dcadmins.txt                 >>datargets.txt
uniq dcadmins.txt
del dcadmins.txt

echo _                            >>datargets.txt   
echo =============================>>datargets.txt
echo Active Domain Admin Sessions >>datargets.txt
echo =============================>>datargets.txt
echo =============================
echo Active Domain Admin Sessions 
echo -----------------------------
uniq mysessions2.txt | sort >> datargets.txt
uniq mysessions2.txt

REM ## If the user uploads GDA via meterpreter there is no point to open datargets.txt on notepad
REM -- start datargets.txt

DEL myadmin*.txt

echo .
echo .
echo Results have been exported to datargets.txt
DEL mysessions2.txt
DEL mysessions.txt
DEL dcs.txt


:end

十一、利用powershell收集域信息

使用PowerView

下载地址:

https://github.com/shigophilo/tools/blob/master/PowerView.ps1 https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1

一些使用:

  • powerview使用记录
  • powerview使用小记

十二、敏感数据防护

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

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

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

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

2、核心业务机器

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

3、敏感信息

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

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

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

常见Web架构:

  • ASP + Access + IIS 5.0/6.0 + Windows Server 2003
  • ASPX + MSSQL + IIS 7.0/7.5 + Windows Server 2008
  • PHP + MySQL + IIS、Apache、Nginx
  • JSP + MSSQL、ORACLE + Tomcat

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

结语

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

主要是域相关

然后放一个工具

https://github.com/BloodHoundAD/


红客突击队于2019年由队长k龙牵头,联合国内多位顶尖高校研究生成立。其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验。团队现有三十多位正式成员及若干预备人员,下属联合分队数支。红客突击队始终秉承先做人后技术的宗旨,旨在打造国际顶尖网络安全团队。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 红客突击队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内网信息收集
    • (2)查询操作系统及软件的信息
      • (3)查询本机服务信息
        • (4)查询进程列表
          • (5)查看启动程序信息
            • (6)查看计划任务
              • (7)查看主机开机时间
                • (8)查询用户列表
                  • (9)列出或断开本地计算机与所连接的客户端之间的会话
                    • (10)查询端口列表
                      • (11)查询补丁列表
                        • (12)查询本机共享列表
                          • (13)查询路由表及所有可用接口的ARP缓存表
                            • (14)查询防火墙相关配置
                              • 3、Empire下的主机信息收集
                              • 二、查询当前权限
                                • 1、查看当前权限
                                • 三、判断是否存在域
                                  • 1、查看dns服务器
                                    • 2、查看系统详细信息
                                      • 3、查询当前登录域及登录用户信息
                                        • 4、判断主域
                                          • 2、使用ICMP探测
                                            • 3、ARP扫描
                                              • 4、通过常规的TCP/UDP端口扫描探测内网
                                              • 五、扫描域内端口
                                                • 1、Telnet
                                                  • 2、S扫描器
                                                    • 3、Metasploit端口扫描
                                                      • 4、其他
                                                      • 七、查找域控制器
                                                      • 八、获取域内用户和管理员信息
                                                        • 1、查询所有域用户列表
                                                          • 2、查询域管理员用户组
                                                          • 十、查找域管理进程
                                                            • 1、本机检查
                                                              • 2、查询域控的域用户会话
                                                              相关产品与服务
                                                              网站渗透测试
                                                              网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
                                                              领券
                                                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档