内网渗透-信息收集

声明
由于传播、利用本作者所提供信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,本作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并且致歉。谢谢!

✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣幸成为一名分享者,最终目标是成为一名开拓者,很有趣也十分有意义
🤵‍♂️ 个人主页: @One_Blanks
欢迎评论 💬点赞👍🏻 收藏 📂加关注+

X:当渗透测试进入内网后,第一件事就是对内网环境进行信息收集,然后找到域控服务器,方便渗透测试的进一步展开。

本机信息收集

查询网络配置

ipconfig /all

image

查询用户列表

net user – 查看本机用户列表

net localgroup Adminitrators – 本机管理员(通常含有域控用户)

query user || qwinsta – 查看当前在线用户

查询进程列表

tasklist /v

wmic process list brief

在这里插入图片描述

  • 两个命令都是查询计算机进程任务的cmd命令
查询操作系统及安装软件版本信息
  • 获取操作系统和版本信息

systeminfo

在这里插入图片描述

或者进行一个信息筛选,但是不如直接一把梭直接显示出来简便

systeminfo | findstr /B /C:“OS Name” /C:“OS Version”

systeminfo | findstr /B /C:“OS 名称” /C:“OS 版本”

  • 查看安装软件以及其版本

wmic product get name,version

在这里插入图片描述

powershell “Get-WmiObject -class Win32_Product | Select-Object -Property name,version”

在这里插入图片描述

两个命令的输出结果是一样的

查看端口列表

netstat -ano

  • 可以根据其开放的端口分析这台计算机在内网中的作用,但更多的是利用本地信息收集的所有内容进行一个综合的判断
查询补丁列表

systeminfo

wmic qfe get caption,description,hotfixid,installedon

查询本机共享

net share

在这里插入图片描述

wmic share get name,path,status

在这里插入图片描述

查询防火墙配置
  • 关闭防火墙

A. Windows Server 2003 系统及以前版本

netsh firewall set opmode disable

B. Windows Server 2003 系统以后版本

netsh advfirewall set allprofiles state off

  • 查看配置

netsh firewall show config

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

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

查询并开启远程连接服务
  • 查看RDP服务的真实端口(有的时候会改为别的端口)

REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\winstations\RDP-Tcp” /v portnumber

0xd3d是十六进制,其十进制就是3389端口

  • 查看是否开启RDP远程服务

REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections

命令执行后,会显示查询结果。如果结果中显示 fDenyTSConnections 的值为 0x0(或者数值 0),则表示 RDP 远程连接服务已开启;如果值为 0x1(或者数值 1),则表示 RDP 远程连接服务已关闭

  • 开启RDP远程服务(需要管理员权限)

REG ADD “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f

  • REG ADD:这是用于添加或修改注册表项的命令。
  • "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server":这是注册表中的路径,指向与终端服务器(包括 RDP 服务)相关的设置。
  • /v fDenyTSConnections/v 表示要操作的注册表值(Value)的名称。fDenyTSConnections 这个值用于控制是否允许 RDP 连接。当该值为 0 时,允许 RDP 连接;为 1 时,禁止 RDP 连接。
  • /t REG_DWORD/t 表示数据类型,REG_DWORD 是一种双字节的数据类型,用于存储整数等数值。
  • /d 0/d 表示要设置的数据值。这里将 fDenyTSConnections 的值设置为 0,即允许 RDP 连接。
  • /f:表示强制写入,即使目标注册表项已经存在,也会覆盖其原有值。

第一步:获取服务名称(因为并不知道服务的名称,所以先使用该命令进行获取)

wmic service where “Caption like ‘%Remote Desktop%’” get Name

第二步:启动服务(管理员权限)

net start 服务名称

查询当前权限

whoami

  • 本地普通用户

在这里插入图片描述

  • 本地管理员用户

  • 域内用户

在这里插入图片描述

  • 域内管理员用户

在这里插入图片描述

域内信息收集

判断是否有域

ipconfig /all

systeminfo

在这里插入图片描述

nslookup hacker.testlab – 反向查询命令

net config workstation

net time /domain –

域控在内网中一般也作为时间处理器

三种情况:

1.存在域,当前用户不是域用户

2.存在域,当前用户是域用户

3.不存在域

域内存活主机探测(白天探测一遍、半夜探测一遍)
  • 利用icmp协议快速探测内网

ping命令:

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

image

直接探测出两台存活主机
  • VBS脚本:

  • 利用arp扫描完整内网

  1. arp-scan工具
  2. Invoke-ARPScan.ps1
  3. Empire中的arpscan模块
  • 利用常规TCP/UDP端口扫描探测内网

工具:scanline

命令:sl -h -t 22,80-89,110,389,445,3389,8080,3306 -u 53,161,137,139 -O c:\windows\temp\sl_res.txt -p 192.168.1.1-254 /b

总之,我们需要注意探测主机的时候我们不只可以使用一种协议,我们可以使用不同的协议去探测,一直探测到完整的内网存活主机,但是要注意探测流量不要过大,避免触发告警。

域内端口扫描

工具:nmap 、masscan、Metasploit

以namp为例:(直接探测端口服务、版本号)

  • 端口扫描

nmap -sT --min-rate 10000 -p- 127.0.0.1 -oA nmapsc/ports

  • 详细信息扫描

nmap -sT -sV -sC -O -p22,80,443 127.0.0.1 -oA nmapsc/detail

  • udp扫描

namp -sU --top-ports 20 127.0.0.1 -oA nmapsc/udp

  • 脚本扫描

nmap --script=vuln -p22,80,443 127.0.0.1 -oA nmapsc/vuln

定位域管理员*****

  • 常规定位管理员的方法:
  1. 日志

日志指的是本机机器的管理员日志,可以使用脚本或wevtutil导出查看

  1. 回话

会话是域内每个机器的登录回话,可以匿名查询,无需权限,可以使用netsess.exe或powerview等工具进行查询

定位域管理员工具

psloggedon.exe

PVEFindADUser.exe

netview.exe

netsess.exe

Nmap的NSE脚本

PowerView脚本-Invoke-UserHunter

Empire下user_hunter模块

查找域管理进程
  • A.本机检查
  1. 获取域管理员列表

net group “Domain Admins” /domain

  1. 查看本机所有进程

tasklist /v

  1. 交叉检查(找到域管理进程)
  • B.查询域控制器的域用户会话
  1. 收集域控制器列表

net group “Domain Controllers” /domain

在这里插入图片描述

  1. 收集域管理员列表

net group “Domain Admins” /domain

  1. 使用Netsess.exe查询每个域控制器,收集所有活动域回话的列表

Netsess.exe -h

  1. 将域管理员列表与活动会话列表交叉引用,以确定哪些IP地址具有活动域令牌
  • C.扫描远程系统上运行的任务
  1. 收集域管理员的列表
  2. 运行脚本

for /f %i in (ips.tst) do @echo [+] %i && @tasklist /v /v %i /u user /p password 2>nul >output.txt && for /f %n in (name.txt) do @type output.txt |finder %n >nul && echo [!] %n was found running a process on %i && pause

  • D.扫描远程系统上netBIOS信息

for /F %i in (ips.txt) do @echo [+]Checking %i && nbtstat -A %i

2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type

nbsessions.txt | findstr /I %n >NUL && echo [!] %n was found logged

into %i

PS(PowerShell)收集域内信息

  • get-executionpolicy (查看执行策略)
  • set-executionpolicy [策略方式] (修改执行策略)

Restricted(默认):不允许任何脚本运行,能防止恶意脚本执行,主要用于安全环境。

AllSigned:要求所有脚本和配置文件都由受信任的发布者签名,保证脚本来源可信。

RemoteSigned:本地创建的脚本可以运行,从网络下载的脚本需要有数字签名才能运行,平衡安全性和便利性。

Unrestricted:可以运行所有脚本,安全性较低,用于受信任的环境。

PowerView脚本

可以直接去github中搜索下载

import-moudule .\powerview.ps1 --导入脚本

一、用户相关信息收集

  1. 获取域用户列表
    • Get - NetUser:此命令用于获取当前域中的用户信息。它会返回诸如用户名、用户描述、用户上次登录时间等详细信息。例如,你可以通过运行这个命令来查看域中所有用户账户的基本情况,帮助识别潜在的目标账户。
    • Get - NetUser - Username <specific_user>:如果你只想获取特定用户(将<specific_user>替换为实际用户名)的信息,这个命令就很有用。它可以让你深入了解某个用户账户的详细属性,比如该用户所属的组、是否被禁用等。
  2. 查找具有特定权限的用户
    • Find - LocalAdminAccess:用于查找在本地计算机上具有管理员权限的用户。这在评估系统安全态势时非常重要,因为这些用户可能有较高的权限来执行敏感操作。例如,在渗透测试场景中,攻击者可能会关注这些具有本地管理员权限的用户,以寻找进一步横向移动的机会。

二、组相关命令

  1. 获取域组列表
    • Get - NetGroup:返回当前域中的组信息,包括组名、组描述等。通过这个命令,你可以了解域中的组织结构,比如安全组和通讯组的分布情况,有助于分析访问控制策略。
    • Get - NetGroup - GroupName <specific_group>:用于获取特定组(将<specific_group>替换为实际组名)的详细信息,例如该组的成员列表等。这可以帮助你确定哪些用户属于特定的安全组,从而推断他们可能拥有的权限。
  2. 获取组内成员信息
    • Get - NetGroupMember - GroupName <group_name>:可以获取指定组(<group_name>为组名)内的成员信息。这在评估权限分配和用户角色时很有用,比如你可以查看某个管理员组中有哪些用户,从而确定潜在的高权限账户。

三、计算机相关命令

  1. 获取域内计算机列表
    • Get - NetComputer:获取当前域内的计算机信息,包括计算机名、操作系统版本等。在网络管理和安全审计中,这个命令可以帮助你了解网络中的资产情况,比如有多少台计算机、它们的系统配置等。
    • Get - NetComputer - OperatingSystem <os_name>:可以筛选出运行特定操作系统(将<os_name>替换为操作系统名称,如Windows Server 2019)的计算机。这对于针对性的系统更新、安全漏洞扫描等任务很有帮助。
  2. 检查计算机的共享资源
    • Get - NetShare - ComputerName <computer_name>:用于查看指定计算机(<computer_name>为计算机名)上的共享资源。这可以帮助你发现潜在的信息泄露风险,例如是否有敏感文件通过共享文件夹暴露在网络中。

域渗透分析工具BloodHound

安装BloodHound所需环境
  1. 安装JDK
  2. 安装Neo4j
  3. 启动Neo4j数据库服务器
  4. 下载BloodHound (GitHub)

图形化界面,需要什么信息直接点就可以

结果也是利用图形进行输出显示。

参考资源链接:[黑客指南:Bloodhound手册](https://wenku.youkuaiyun.com/doc/4gp3r5woj6?utm_source=wenku_answer2doc_content) 《黑客指南:Bloodhound手册》是掌握Bloodhound工具与Neo4jCypher查询语言的宝贵资源。它详细介绍了权限提升漏洞的概念、工具的使用方法、数据收集与查询技术,以及如何分析AD域内的权限关系。 要使用Bloodhound识别权限提升漏洞,首先需要对AD域进行彻底的数据收集。在Bloodhound中,这通常涉及到使用内置的SharpHound工具来收集相关的数据,比如用户组成员关系、权限分配和SID历史等。 收集完毕后,将数据导入Bloodhound的Neo4j数据库,通过图形理论分析用户权限和攻击路径。使用Neo4j Cypher查询语言可以有效地查询和探索这些数据。例如,以下是一个简单的查询示例,用于找到所有有直接或间接本地管理员权限的用户: MATCH (n)-[r:MemberOf*1..]->(m) WHERE m.name CONTAINS 'Administrators' RETURN n.name 在这个查询中,我们使用了MemberOf关系来发现用户与'Administrators'组之间的所有路径。我们还指定了关系的最大长度,这里设置为1到无限长。返回的结果n.name就是拥有管理员权限的用户列表。 此外,Bloodhound还提供了一系列的攻击路径(Attack Pathes),这些路径可以帮助分析者识别从一个节点到另一个节点可能存在的权限提升路径。通过这种方式,分析者可以系统地识别和分析AD域内的潜在权限提升漏洞。 通过这本书,你可以学习到如何使用Bloodhound的各种功能,比如路径分析、容器节点分析、自定义查询等,来更深入地理解和利用Cypher查询语言。《黑客指南:Bloodhound手册》不仅为你提供了查询漏洞的工具和方法,还通过大量实例和最佳实践帮助你将理论应用于实战。 参考资源链接:[黑客指南:Bloodhound手册](https://wenku.youkuaiyun.com/doc/4gp3r5woj6?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值