大余
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

HW期间,为防范钓鱼,即日起FreeBuf将取消投稿文章的一切外部链接。给您带来的不便,敬请谅解~
系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
渗透测试人员需谨记《网络安全法》,根据《网络安全法》所示,未经授权的渗透测试都是不合法的,不管是出于何种目的。红队渗透人员在进行渗透期间,渗透测试的行为和项目必须在被渗透方授予权限可渗透后,才可进行渗透测试操作。
如今有一家dayu公司,需要对自己的业务以及整体的内网框架体系进行隐患挖掘,授予权限我进行对dayu公司的渗透测试操作,在签署了双方的《渗透测试授权书》后,我开始了对dayu公司的渗透之旅。
跳开思维讲,我此篇内容是内网渗透篇章,通过我的专栏:
社工钓鱼 -> 免杀过全杀软 -> 内网渗透
那么我通过了社工钓鱼的各种方式,将钓鱼文件进行免杀后,成功钓鱼到了该公司外围人员计算机,并控制了该计算机权限获得shell,并成功登录对方电脑。
但登陆对方电脑对于渗透测试人员最开始的感觉,面对的是一片“黑森林”,所以渗透测试人员首先需要对当前所处的环境进行判断。接下来将开始第一步内网渗透内网中的信息收集。
信息收集的深度,直接关系到内网渗透测试的成败!!
二、环境介绍
拓扑图简介
为了更好的演示接下来的渗透,我继续贴出了dayu公司的环境拓扑图,公司搭建环境:
三、内网信息收集(一)
1、概述
面对“黑森林”我需要判断三个方面:
1. 对当前服务器角色进行判断 2. 对当前服务器所处网络环境的拓扑结构进行分析和判断 3. 对当前服务器所处区域进行判断
对当前服务器角色进行判断:
判断当前机器是否为普通web服务器,开发测试服务器,DNS服务器等等...
对当前服务器所处网络环境的拓扑结构进行分析和判断:
对所处内网进行全面的数据收集和分析并整理,根据收集到的信息画出大致的内网整体拓扑架构图。
对当前服务器所处区域进行判断:
有大致拓扑图后,判断机器处于图中哪个区域,在DMZ、办公区、核心区等等。
2、本机信息收集
内外网环境中,都需要对服务器进行信息收集也是最重要的第一步:
1. 服务器内网结构是什么样的? 2. 角色是什么? 3. 谁在使用这台服务器? 4. 服务器上安装了什么杀软? 5. 服务器通过什么方式上网的? 6. 机器是笔记本还是台式机还是? 7. .....
需要简单了解本机信息包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等等。
如果是域内主机,操作系统、应用软件、补丁、服务、杀毒软件一般都是批量统一安装的。
3、手动收集信息
这里将介绍十六种手动收集内网信息的方法:
1)查询网络配置信息
ipconfig /all
这里发现了这台被控制主机存在双网卡:
1. 存在192.168.253.35外网网卡和10.10.3.100内网网卡 2. 该主机名称:user1 3. 主DNS:xiyou.dayu.com(判断出存在子域,该计算机是域用户) 4. DNS服务器:10.10.3.6(判断出子域控制器为该IP地址)
2)查询操作系统及软件的信息
(1) 查询操作系统和版本信息
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
通过命令查看到:
OS 名称: Microsoft Windows 7 专业版 OS 版本: 6.1.7601 Service Pack 1 Build 7601
(2)查看系统体系结构
echo %PROCESSOR_ARCHITECTURE%
结构为:AMD64
(3)查看安装的软件及版本、路径等
两种方法:
wmic product get name,version powershell "get-wmiobject -class win32_product |select-object -property name,version"
3)查询本机服务信息
wmic service list brief
4)查询进程列表
tasklist
这为了检测安装是否存在杀软,复制内容放入杀软检测即可!
查询杀软地址:
https://www.ddosi.com/av/1.php
5)查看启动程序信息
wmic startup get command,caption
该计算机是台VM的虚拟环境!
6)查看计划任务
chcp 437
schtasks /query /fo LIST /v > 1.txt
这里查看到很多计划启动的任务类型和时间等;
7)查看主机开机时间
net statistics workstation
查看到主机开启时间:
统计数据开始于 2021/3/5 16:22:11
8)查询用户列表
net user
net localgroup administrators
# 查看本地管理员底下用户和组信息,枚举域信息
query user || qwinsta
# 查看在线用户
存在用户dayu和da.yu,并都在administrators管理组中,目前运行的是dayu用户。
9)列出或断开本地计算机与所连接的客户端之间的会话
net session
无会话信息!
10)查询端口列表
netstat -ano
开启了135、445、3389端口!
11)查看补丁列表
systeminfo
收集信息:
该计算机为windows7专业版,xiyou.dayu.com的子域用户,安装了四个简单的补丁。
或者执行:
wmic qfe get Caption,Description,HotFixID,InstalledOn
12)查询本机共享列表
net share
wmic share get name,path,status
开启:
C$ C:\ 默认共享
IPC$ 远程 IPC
ADMIN$ C:\Windows 远程管理
该主机开启了三类,那么可以进行IPC等内网操作!
13)查询路由表及所有可用接口的ARP缓存表
route print
arp -a
从arp表中读取到,存在10.10.3.5,目前知道10.10.3.6是该设备配置连接的DNS服务器,那么10.10.3.5可初步判断为主域的DNS服务器。
14、查询防火墙相关配置
(1)关闭防火墙
netsh firewall set opmode disable
# windows 2003 及之前版本
netsh advfirewall set allprofiles state off
# windows 2003之后的版本
已进行关闭!
(2)查看防火墙配置
netsh firewall show config
防火墙未做任何配置!
(3)修改防火墙配置
如果防火墙开启状态,可以执行如下操作进行过滤!!
1.windows 2003及之前允许指定(nc.exe)程序全部链接:
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable
在入站规则加入了nc到防火墙中!
2.允许指定程序退出:
netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe"
3.允许3389端口放行:
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
开启3389在防火墙中放行!
(4)自定义防火墙日志的储存位置
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
15)查看代理配置情况
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
无代理现象,否则会出现IP+端口!
16)查询并开启远程连接服务
(1)查看远程连接端口
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber
PortNumber REG_DWORD 0xd3d
这里0xd3d是16进制字符!
进制转换:https://coding.tools/cn/hex-to-decimal
可看到远程链接端口是3389!
(2)在windows 7中开启3389端口
目前该机子前面信息收集发现是windows 7系统,那么来开启3389:通过防火墙放行3389和开启3389远程,导致我们前期就可以远程登录该计算机了。
关闭远程端口:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 0
操作完成退出需要还原先前配置!
通过以上16种信息收集,定位到该计算机系统、网卡路由、防火墙、补丁、存在域、已开启防火墙、设置开启3389、ARP发现主域、存在两个管理员权限用户等等!这些信息非常重要并记录。
4、自动收集信息
为了简化操作,可以创建一个脚本, 在目标机器上完成流程、服务、用户账号、用户组、网时区等信息的查询工作。
利用WMIC进行信息收集:
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%" >> dayu.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> dayu.html
wmic USERACCOUNT list full /format:"%var%" >> dayu.html
wmic group list full /format:"%var%" >> dayu.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> dayu.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> dayu.html
wmic netuse list full /format:"%var%" >> dayu.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> dayu.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> dayu.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> dayu.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> dayu.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> dayu.html
可看到,枚举到了很多信息都体现在html页面上,我们还可以对应脚本添加需要搜索的内容!!
5、查询当前权限
需要查看权限判断目前用户是什么样的一个用户类型,存在三种情况:普通用户、管理员用户、域用户。
1)查看当前权限
whoami
user1\dayu类型属于域用户!
2)获取域SID
whoami /all
user1\dayu S-1-5-21-170666598-1397264716-2177935098-1000
域用户我需要获取SID,后期可能会进行域渗透!
还有别很多方法能判断是否是域环境!继续介绍!
6、判断是否存在域
以下方法是获取域信息的,但是在获取本机相关信息以及判断出存在域了,并且该计算机就是子域中的普通用户:
ipconfig /all发现:
xiyou.dayu.com (发现子域)
dayu.com (发现主域)
systeminfo也发现:
xiyou.dayu.com (发现子域)
定位到域控制器后:
1)查询当前登录域及登录用户信息
net config workstation
可看到详细的列举了域工作站和目前域情况!
2、判断主域
通常域服务器会同时作为时间服务器使用:
net time /domain
出现发生系统错误5,拒绝访问是表明存在域,但当前用户不是域用户!
通过这两个方法更证明了该计算机不是域控制器,但是是xiyou.dayu.com子域的普通用户!!
四、内网信息收集(二)
在内网信息收集(一)收集到了以下信息:
1. 存在双网卡,内网网卡IP:10.10.3.100
2. 该计算机为windows 7系统
3. 该计算机为子域用户,获得子域和父域的域名
4. 通过arp发现子域IP为:10.10.3.6,父域IP为:10.10.3.5
5. 本计算机存在da.yu和dayu两个管理员权限用户
6. 获得本机的SID值
7. 以及开启了3389,允许防火墙通过,补丁未打的情况 ......
通过以上的定位,需要进一步的深入内网信息收集,首先从发现10.10.3.100内网网卡开始,探测是否存在别的用户等情况!
1、探测域内存活主机
内网存活主机探测是内网渗透测试中不可或缺的一个环节!!
1)利用NetBIOS快速探测内网
NetBIOS是局域网程序使用的一种应用程序编程接口(API),所有的局域网都是NetBIOS协议的基础上工作的。优先推荐使用!
这里需要利用nbtscan.exe工具,nbtscan.exe是一个命令行工具,主要扫描本地或者远程TCP/IP网络上的开放NetBIOS,支持windows和linux:
将工具上传!可看到扫描发现10.10.3.6,并且列举出DC(域控制器)!!
2、利用ICMP协议和ARP快速探测内网
1)NetBIOS快速探测内网
除了可以利用NetBIOS快速探测内网,万一无法上传工具等限制,可以利用ICMP协议快速探测内网:
for /L %I in (1,1,254) DO @ping -w 1 -n 1 10.10.3.%I | findstr "TTL="
可看到结果是一样的!
2)通过ARP扫描探测内网
这里利用arp-scan.exe工具进行arp扫描,我将工具上传,-t 定义扫描范围即可:
arp-scan.exe -t 10.10.3.0/24
这里速度比ICMP是快的!结果一样!
3)通过Nishang中的Invoke-ARPScan.ps1脚本
远程加载脚本进行扫描:
项目地址:
https://github.com/samratashok/nishang
使用方法:
powershell -exec bypass -Command "& {Import-Module C:\Users\Administrator\Desktop\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 192.168.253.0/24}"
速度还是挺快的!!
五、内网信息收集(三)
收集到内网的存活主机后,我需要进一步的搜索主机开了哪些端口对应哪些服务,更好的进一步渗透!
后期会讲解代理,可以用代理出流量后利用市面上渗透工具进行端口扫描是更方便的,这里介绍不代理流量的信息收集!
1、telnet 端口收集
直接对应端口扫描即可,常见的渗透端口:
22,80-89,110,389,1099,1433,2059,6379,7001,8080,1521,3306,3389,5432,53,161,137,139
这里发现了对方域控制器开放了139和445端口!
2、端口 Banner 信息
通过各种方式了端口,可以使用客户端连接工具或者NC,获取服务端的Banner信息,获取Banner信息后,可以在漏洞库中查找对应的CVE编号的POC、EXP,在ExploitDB、Seebug等平台上查看相关的漏洞利用工具,然后到目标系统中验证漏洞是否存在,正对性的进行安全加固!
https://www.securityfocus.com/bid
https://www.exploit-db.com/
这里借鉴了大佬的图,感谢大佬的总结,也为内网旅行上添加一点色彩!
可看到对应的端口利用信息,在后期会拓展该方面的思路和内容!
六、总结
通过以上的内网信息收集,我对这家公司信息整理了出来,发现域普通用户、存在子域和主域、域名和DNS、子域和主域IP、域用户的计算机详细信息、补丁信息、SID值、子域开启的端口信息等等
从开始拿到shell,在通过内网的信息收集,有了一定的渗透目标和方向后,我们还需要进一步的拓展信息收集内网知识,俗话说的好:信息收集的深度,直接关系到内网渗透测试的成败!!
继续内网渗透的旅程!!
希望大家提高安全意识,没有网络安全就没有国家安全!
今天基础牢固就到这里,虽然基础,但是必须牢记于心。
作者:大余
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


