当前位置: 首页 > news >正文

内网渗透测试理论学习之第四篇内网渗透域的横向移动

文章目录

在内网中,从一台主机移动到另外一台主机,可以采取的方式通常有文件共享计划任务远程连接工具客户端等。

一、IPC

IPC(Internet Process Connection)是为了实现进程间通信而开放的命名管道。
IPC可以通过验证用户名和密码获得相应的权限,
通过ipc$可以与目标机器建立连接,利用这个连接可以在目标机器上运行命令。

net use \\192.168.1.1\ipc$ "pass" /user:adstudy\administrator

利用条件:开启139、445端口;管理员开启了默认共享

二、HashDump

LM Hash“LAN Manager Hash”,本质是DES加密,还是硬编码密钥,从Windows Vista和Windows Server 2008开始默认禁用,
dump出的LM Hash为“**aad**3b435b51404eeaad3b435b51404ee”表示为空或被禁用

NTLM Hash,“New Technology LM Hash”,MD4加密。

Hash散列可以通过在线数据库、彩虹表等来破解,也可以使用PTH(Pass the Hash 哈希传递)来进行横向渗透。

要想在Windows操作系统中抓取散列值或明文密码,必须将权限提升至System
本地用户名、散列值和其他安全验证信息都保存在SAM文件中。
lsass.exe进程用于实现Windows的本地安全策略和登陆策略。
可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。

e.g. GetPassword、PwDump7、QuarksPwDump、mimikatz、PowerShell

SAM文件保存位置C:\Windows\System32\config,该文件不允许复制,但可以使用U盘进入PE系统进行复制。

利用reg导出SAM和System文件,通过mimikatz或者Cain来从文件读取hash

利用任务管理器或者微软出品的Procdump导出lsass.dmp文件,通过mimikatz来从内存文件中获取hash

Windows Server 2012开始默认关闭WDigest,使攻击者无法从内存中获取明文密码;2012以下版本,如果安装KB2871997补丁,同样效果。WDigest功能状态可以在注册表中查看修改。

Hashcat只支持CPU破解;oclHashcat支持GPU破解(AMD、NIVDA),支持破解Windows密码、Linux密码、Office密码、Wi-Fi密码、MySQL密码、SQL Server密码,以及由MD5、SHA1、SHA256等国际主流加密算法加密的密码。

如何防范hashdump?

1、Windows Server 2012 R2新增了一个名为受保护的用户组(Protected Users),只要将需要保护的用户放入该组,攻击者就无法使用mimikatz等工具抓取明文密码和散列值了。2、安装KB2871997,是微软用来解决PsExec或IPC远程查看(c$)问题的补丁,能是本地账号不再被允许远程接入计算机系统,**但是SID=500的本地管理员账号(默认Administrator)除外**。3、微软在Windows XP中添加了一个名为WDigest的协议,该协议能够使Windows将明文密码存储在内存中,以方便用户登录本地计算机。4、根据Debug权限确定哪些用户可以将调试器附加到任何进程或内核中,默认情况下只有Administrator。mimikatz在抓取散列值或明文密码时需要使用Debug权限(因为mimikatz需要和lsass进程进行交互)。将Administrator从Debug组中移除。

三、PTH

PTH(Pass the Hash 哈希传递)。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。

在Windows网络中,散列值就是用来证明身份的(有正确的用户名和密码散列值,就能通过验证)。从Windows Server 2012 R2开始,默认在内存中不会记录明文密码,因此,攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。

进行身份验证时,不会使用明文口令,而是将明文口令通过系统API转换成散列值,再与数据库中存储的散列值进行对比,如果完全相同则表示验证成功。不过,攻击者在获得密码散列值之后,依旧可以使用pth攻击来模拟用户进行验证。

使用NTLM Hash进行哈希传递;使用AES-256秘钥进行哈希传递(Pass the Key)。

e.g. mimikatz

四、PTT

要想使用mimikatz的哈希传递功能,必须具有本地管理员权限。mimikatz同样提供了不需要本地管理员权限进行横向渗透测试的方法,例如票据传递(Pass the Ticket,PTT)。

五、PsExec

PsExec是微软官方PsTools工具包中的软件,期初主要是用于大批量Windows主机的运维,在域环境下效果甚好。

通过PsExec,可以在远程计算机上执行命令,也可以将管理员权限提升到System权限以运行指定的程序。

PsExec的基本原理是:通过管道在远程目标计算机上创建一个psexec服务,并在本地磁盘中生成一个名为“PSEXECSVC”的二进制文件,然后通过psexec服务运行命令,运行结束后删除任务。

需要远程系统开启admin$共享(默认是开启的),会产生大量日志。

e.g. Metasploit

六、WMI

WMI,Windows Management Instrumentation,从Windows 98开始支持,可以在本地或者远程管理计算机系统。

自从PsExec在内网中被严格监控后,越来越多的反病毒厂商将PsExec加入了黑名单,于是攻击者逐渐开始使用WMI进行横向移动。通过渗透测试发现,在使用wmiexec进行横向移动时,Windows默认不会记录WMI的操作日志。

使用wmic远程执行命令,在远程系统中启动Windows Management Instrumentation服务(目标服务器需要开放135端口,wmic会以管理员权限在远程系统中执行命令)。如果服务器开启了防火墙,wmic将无法进行连接。此外,wmic命令如果没有回显,可以将命令结果输出到某文件,并使用ipc$和type来读取信息。如果wmic执行的是恶意程序,将不会留下日志。

e.g. wmic、wmiexec.py、wmiexec.vbs、Invoke-WmiCommand.ps1、Invoke-WMIMethod

七、DCOM

DCOMDistributed Component Object Model,分布式组件对象模型)是微软的一系列概念和程序接口。
通过DCOM,客户端程序对象能够对网络中的另一台计算机上的服务器程序对象发送请求。

DCOM是基于组件对象模型(COM)的。
COM提供了一套允许在同一台计算机上的客户端和服务端之间进行通信的接口。

执行流程同样:通过ipc$连接远程计算机;执行命令。

八、SPN

微软给与内的每种资源分配了不同的服务主体名称(Service Principal Name,SPN)。

因为域环境中的每台服务器都需要在Kerberos身份验证服务中注册SPN,所以攻击者会直接向域控制器发送查询请求,获取其需要的服务的SPN,从而知晓其需要使用的服务资源在哪台机器上

SPN扫描也称作“扫描Kerberos服务实例名称”,在活动目录中发现服务的最佳方法就是SPN扫描。与网络端口扫描相比,SPN扫描的主要特点是不需要通过连接网络中的每个IP地址来检查服务端口(不会因触发内网中的IPS、IDS等设备的规则而产生大量的警告日志)。因为SPN查询是Kerberos票据行为的一部分,所以检测难度较大。

SPN是通过LDAP协议向域控制器进行查询的,所以,攻击者只要获得一个普通的域用户权限就可以进行SPN扫描。

Kerberoast攻击。导出票据,破解票据。

防御:确保服务账号密码的长度超过25位;确保密码的随机性(避免相同);定期修改密码。

九、Exchange

电子邮件中可能包含大量的源码、企业内部通讯录、明文密码、敏感业务登陆地址及可以从外网访问内网的VPN账号密码等信息。

Exchange支持PowerShell对其进行本地或远程操作。

邮箱服务器、客户端访问服务器、集线传输服务器是核心角色,只要部署这三个角色就能提供基本的电子邮件处理功能,且这仨可以部署在同一台主机上。

邮件发送使用统一的通信协议,即SMTP(简单邮件传输协议);邮件接收则会使用多种协议标准,如从POP(邮局协议)发展而来的POP3,以及使用较为广泛的IMAPInternet邮件访问协议)。Exchange开发了私有的MAPI协议用于收取邮件。

Exchange支持的访问接口和协议:

  • OWA(Outlook Web App):Exchange提供的Web邮箱。
  • EAC(Exchange Administrative Center):Exchange管理中心,后台。
  • Outlook Anywhere(RPC-over-HTTP,RPC/HTTP)
  • MAPI(MAPI-over-HTTP,MAPI/HTTP)
  • Exchange ActiveSync(EAS,XML/HTTP)
  • Exchange Web Service(EWS,SOAP-over-HTTP)

Exchange服务发现:基于端口扫描发现(nmap)、SPN查询(在安装Exchange时,SPN就被注册在AD中了)

Exchange数据库的后缀为“.edb”,存储在Exchange服务器上,使用PowerShell可以查看相应信息。

Exchange邮件的文件后缀为“.pst”

UNCUniversal Naming Convention,通用命名规则,也称通用命名规范、通用命名约定)。类似于\\hostname\sharename\\ip\address\sharename的网络路径就是UNC路径,sharename为网络共享名称。

相关文章:

内网渗透测试理论学习之第四篇内网渗透域的横向移动

文章目录一、IPC二、HashDump三、PTH四、PTT五、PsExec六、WMI七、DCOM八、SPN九、Exchange在内网中,从一台主机移动到另外一台主机,可以采取的方式通常有文件共享、计划任务、远程连接工具、客户端等。 一、IPC IPC(Internet Process Conn…...

20 | k8s v1.20集群搭建master和node

1 单节点master 1.1 服务器整体规划 1.2 单Master架构图 1.3 初始化配置 1.3.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld1.3.2 关闭selinux sed -i s/enforcing/disabled/ /etc/selinux/config # 永久 setenforce 0 # 临时 1.3.3 关闭swap …...

《商用密码应用与安全性评估》第一章密码基础知识1.1应用概念

密码的概念与作用 概念 密码:采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务。 密码技术:密码编码、实现、协议、安全防护、分析破译、以及密钥产生、分发、传递、使 用、销毁等技术。 密码技术核心:密码算法…...

【博学谷学习记录】超强总结,用心分享丨人工智能 深度学习 神经网络基础知识点总结

目录神经网络激活函数引入激活函数原因:sigmoid激活函数tanh 激活函数ReLU 激活函数(最常用)SoftMax如何选择反向传播参数初始化方法优化方法正则化批量归一层网络模型调优的思路神经网络 简单的神经网络包括三层:输入层&#xf…...

Python+tkinter添加滚动条

大家好,我是IKUN的真爱粉,有时候我们需要在tkinter上加滚动条,那么怎么制作呢,我们先看下面的视频展示效果,是不是你想要的 展示 感觉制作的略微粗糙,各位可以后期自己慢慢调整 创建滚动条重要的步骤是&a…...

大V龚文祥造谣董明珠恋情被禁言

我是卢松松,点点上面的头像,欢迎关注我哦! 因造谣董明珠与王自如恋情,知名大V龚文祥老师被今日头条禁言。龚文祥说,69岁的董明珠,找了一个小自己34岁的男友,引的网友议论纷纷。 2月26日&#…...

深入浅出Reactjs

深入浅出Reactjs 介绍 React是一个流行的JavaScript库,用于开发复杂的用户界面。它可以帮助开发人员构建灵活、高效和可维护的应用程序。本文将深入浅出地介绍React开发框架。 React的核心概念 React框架的核心概念是组件。组件是一个独立的、可复用的代码块&am…...

《C++ Primer Plus》第18章:探讨 C++ 新标准(1)

本章首先复习前面介绍过的C11功能,然后介绍如下主题: 移动语义和右值引用。Lambda 表达式。包装器模板 function。可变参数模板。 本章重点介绍 C11 对 C 所做的改进。本书前面介绍过多项 C11 功能,本章首先复习这些功能,并详细…...

PCB板漏孔、漏槽怎么办?看工程师避坑“SOP”

本文为大家介绍PCB画板时常见的钻孔问题,避免后续踩同样的坑。钻孔分为三类,通孔、盲孔、埋孔。不管是哪种孔,孔缺失的问题带来的后果是直接导致整批产品不能使用。因此钻孔设计的正确性尤为重要。 案例讲解 问题1:Altium设计的文…...

mysql数据库同步方案:springboot+集成cannal

1授权 -- 使用命令登录:mysql -u root -p -- 创建用户 用户名:canal 密码:Canal123456 create user canal% identified by Canal123456; -- 授权 *.*表示所有库 grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to canal% ident…...

oracle 19c 创建物化视图并测试logminer进行日志挖掘

1、创建物化视图 alter session set containerpdb; grant create materialized view to scott; create materialized view 物化视图名 -- 1. 创建物化视图 build [immediate | deferred] -- 2. 创建方式,默认 immediate refre…...

2.1 黑群晖驱动:10代u核显硬解驱动(解决掉IP、重启无法连接问题)

本文提供了两种10代核显驱动方式:1)第一种(本文:二、仅修改i915.ko驱动10代u核显方法)为网上流传最多但是对主板兼容性要求很高,网上评论常会出现操作后无法识别IP(掉IP)的问题。因此,采用第一种…...

二、CSS

一、CSSHTML的结合方式 1、第一种&#xff1a;在标签的style属性上设置"key:value value;"&#xff0c;修改标签样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>…...

变分推断 (Variational Inference) 解析

前言 如果你对这篇文章可感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 变分推断 在贝叶斯方法中&#xff0c;针对含有隐变量的学习和推理&#xff0c;通常有两类方式&#xff0c;其一是马尔可…...

27. 移除元素

题目链接&#xff1a;https://leetcode.cn/problems/remove-element/给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输…...

hive临时目录清理

hive运行失败会导致临时目录无法自动清理&#xff0c;因此需要自己写脚本去进行清理 实际发现hive临时目录有两个&#xff1a; /tmp/hive/{user}/* /warehouse/tablespace//hive/**/.hive-staging_hive 分别由配置hive.exec.scratchdir和hive.exec.stagingdir决定: 要注意的…...

如何创建发布新品上市新闻稿

推出新产品对任何企业来说都是一个激动人心的时刻&#xff0c;但向潜在客户宣传并围绕您的新产品引起轰动也可能是一个挑战。最有效的方法之一就是通过发布新品上市新闻稿。精心制作的新闻稿可以帮助我们通过媒体报道、吸引并在目标受众中引起关注。下面&#xff0c;我们将讲述…...

关于.bashrc和setup.bash的理解

在创建了ROS的workspace后&#xff0c;需要将workspace中的setup.bash文件写入~/.bashrc 文件中&#xff0c;让其启动&#xff1a; source /opt/ros/melodic/setup.bash这句话的目的就是在开新的terminal的时候&#xff0c;运行这个setup.bash&#xff0c;而这个setup.bash的作…...

03 Android基础--fragment

03 Android基础--fragment什么是fragment&#xff1f;fragment生命周期&#xff1f;动态的fragment与静态的fragmentfragment常用的两个类与APIFragment与Activity通信什么是fragment&#xff1f; 碎片&#xff0c;一个activity中可以使用多个fragment&#xff0c;可以把activi…...

Redis使用,AOF、RDB

前言 如果有人问你&#xff1a;"你会把 Redis 用在什么业务场景下&#xff1f;" 我想你大概率会说&#xff1a;"我会把它当作缓存使用&#xff0c;因为它把后端数据库中的数据存储在内存中&#xff0c;然后直接从内存中读取数据&#xff0c;响应速度会非常快。…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...