网络安全--内网篇

一、环境

一个简单的域环境,3台机器即可,一个server2012,win7,,win10

二、开始初始的认识内网

在我们日常渗透中,我们进入企业去进行渗透的时候都是处于一个域的环境下,简单来说域一类网络服务而在服务器旁边旁挂着一个防火墙,或者IDS和IPS旁,后面是一个核心交换机,镜像口可以将所有的流量导入IDS,IPS入侵检测或者入侵防御设备中,所以检测到我们流量,然后通过流量匹配规则来进行一个告警

像平常的扫描等一些,就会被防火墙检测到,平常的sql注入是有一个waf这个是防web方面的漏洞,等我们这些都绕过以后只是拿到了一个网站的权限或者APP或小程序,而我们想要入侵内网,就需要拿到一个入口,通过这个入口拿下DMZ区域(一般两张网卡一张对外一张对内),提权之后,用DMZ当做一个代理,之后跳入内网中

还有一种方法内网进入,通过VPN,而这种方式更多的是需要我们通过钓鱼邮件,有可能看到VPN

当然内网扫描中(看内网中有几个服务器)还有一个防护,名为态势感知,这个是专门监管网络流量的,假如网络流量变大,它立马就会检测内网是否能匹配它的规则,假如我们用nmap去扫描直接就会被禁掉

pass:IDS有两种模式,一种是在它的主干链路上直接安装,一种是旁挂,但是我们目前用到的基本是旁观而旁挂基本上就是镜像口把网络流量导入IDS

HIDS:主机日志检测

三、案例进行研究

3.1简单描述一下HIDS(研究一下检测思路)

代理都会有埋点

代理会主动连接我们的服务端,检测的是服务端的日志(apache,系统,ssh登录)

apache的日志 

假设我们在暴力破解,那么服务端就会生成日志

日志回传给IDS,而在IDS中有一定的规则去匹配它

规则文件:

行了说了这么多,用九头蛇暴力破解去试一下

 看看服务端日志,每一个规则以sshd开头

看一下IDS规则怎么匹配的,方法是正则sshd

 之后直接会报警

当然这只是入侵检测,还没牵扯到防御,所以内网渗透是很难成功

3.2 推荐几款软件

作用:取证,监控,隔离(国内顺丰快递用的就是这一套)

Welcome :: Velociraptor - Digging deeper!

pass:

w5:

雾织:(类似于w5要收费100w)

国外有两款开源的也好用:n8n.io,shuffler.io

四、正式开始讨论

4.1协议前的花絮

我们的域管理员就仿佛最高权限的司令官可以登录域内所有的机器上去

我们可以看到/domai中是有我们的域管理员的

域用户:

 本地用户:

假如我们现在拿下了一台服务器的权限,那我们要做的第一件事就是信息收集 

我们一看这个很明显就知道我们是加入到域里面去了

想知道域控制器的ip怎么办?

直接ping或者看DNS

网上有一个工具fscan

下下来之后,根据gethub上面的说明使用

缺点:动静太大了

扫出来咱们的域成员

单扫存活主机有可能避免造成流量过大报警

原因nmap是通过三次握手探测的,而icmp是通过ping来进行探测的

这里有篇文章总结的挺详细的

内网存活主机探测的几种方法 - 春告鳥 - 博客园 (cnblogs.com)

在内网中tasklist查看进程有用可以查看是不是有杀毒软件等进程

在内网中因为域管理员可以登录到域内所有电脑的情况,我们不能用域管理员直接登录,不然我们的明文密码和hash就会被泄露

解释一下吧:windows登录流程是winlogon进程和lass进程还有一个是SAM进程

winlogon是我们登录的框框,账号密码发给lsass进程后一份明文保留在程序,一份hash加密存到SAM中去

这意味一个问题lass进程的明文能不能被抓取出来?

刚好有这一款工具mimikatz

gentilkiwi/mimikatz: A little tool to play with Windows security (github.com)

尝试一下吧,下载好后,导入,进行提权使用

之后输入

sekurlsa::logonpasswords

这一下后我们可以看到把lsass进程中的所有明文倒出来啦

抓取密码被补丁限制了,但是我依然抓到了一个hash值

那在win10和win2012后怎么抓取呢?这里推荐一篇文章

win10及win2012之后系统的明文抓取方式 - XHC远方 - 博客园 (cnblogs.com)

可以看到要求是很苛刻的

服务器不能莫名其妙重启,所以是锁屏,但也只是在win2012 service版本下是有效的

尝试一下吧;

在win系统下进入注册表,新加一个

改成1

这样后息屏或者重新登录我们才可以抓到,此时我们就抓到了管理员的明文密码,可以横向渗透了

那我们要是没有这么理想的环境(域管理员登录过),没有明文,只有hash呢

接下来研究两个登录协议:

横向工具(psexec):可以不需要密码只需要我们的hash

 下载地址(微软工具集):learn.microsoft.com/zh-cn/sysinternals/downloads/psexec

可以看到我们这里可以直接登录上去而且权限很高,前提是我们要有域管理员的账号和密码,直接横向 

但是我们要研究的是hash横向不是密码横向

我们通过mimikatz再次抓取一下hash,但是这只有一个我们要的是LMhash和NThash这两个需要组合

我们的cs也可以抓hash,但是cs要求我们需要给本地种一个马(这个自己下去查资料),通过学习发现win7后把LMhash废除了全部变成aad3的形式了(其实也是空的随便写都无所谓)

拿到hash

4.2开始了解协议 (HTLM)

NTLM 基础 介绍 | windows protocol (gitbook.io)

ntmshash生成方式详解:

全称是LAN Manager Hash, windows最早用的加密算法,由IBM设计。

LM Hash的计算:

  1. 用户的密码转换为大写,密码转换为16进制字符串,不足14字节将会用0来再后面补全。

  2. 密码的16进制字符串被分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度

  3. 再分7bit为一组,每组末尾加0,再组成一组

  4. 上步骤得到的二组,分别作为key 为 "KGS!@#$%"进行DES加密。

  5. 将加密后的两组拼接在一起,得到最终LM HASH值。

# -*- coding:utf-8 -*-
"""
@Author: lingchenwudiandexing
@contact: 3131579667@qq.com
@Time: 2024/3/29 15:09
@version: 1.0
"""
#coding=utf-8
import re
import binascii
from pyDes import *

def DesEncrypt(data, Des_Key):
    k = des(binascii.a2b_hex(Des_Key), ECB, pad=None)
    encrypt_str = k.encrypt(data)
    return binascii.b2a_hex(encrypt_str)

def group_just(length, text):
    text_area = re.findall(r'.{%d}' % int(length), text)
    text_area_padding = [i + '0' for i in text_area]
    hex_str = ''.join(text_area_padding)
    hex_int = hex(int(hex_str, 2))[2:].rstrip("L")
    if hex_int == '0':
        hex_int = '0000000000000000'
    return hex_int

def lm_hash(password):
    pass_hex = password.upper().encode("ascii").hex().ljust(28, '0')
    left_str = pass_hex[:14]
    right_str = pass_hex[14:]
    left_stream = bin(int(left_str, 16)).lstrip('0b').rjust(56, '0')
    right_stream = bin(int(right_str, 16)).lstrip('0b').rjust(56, '0')
    left_stream = group_just(7, left_stream)
    right_stream = group_just(7, right_stream)
    left_lm = DesEncrypt(b'KGS!@#$%', left_stream.encode('ascii')).decode('ascii')
    right_lm = DesEncrypt(b'KGS!@#$%', right_stream.encode('ascii')).decode('ascii')
    return left_lm + right_lm

if __name__ == '__main__':
    hash = lm_hash("123456")
    print(hash)

LM加密算法存在一些固有的漏洞

  1. 首先,密码长度最大只能为14个字符

  2. 密码不区分大小写。在生成哈希值之前,所有密码都将转换为大写

  3. 查看我们的加密过程,就可以看到使用的是分组的DES,如果密码强度是小于7位,那么第二个分组加密后的结果肯定是aad3b435b51404ee,如果我们看到lm hash的结尾是aad3b435b51404ee,就可以很轻易的发现密码强度少于7位

  4. 一个14个字符的密码分成7 + 7个字符,并且分别为这两个半部分计算哈希值。这种计算哈希值的方式使破解难度大大降低,这使得14个字符的密码的有效强度等于,7个字符的密码的两倍,该密码的复杂度明显低于

    14个字符的密码的理论强度。

  5. Des密码强度不高

不同版本的支持

登录别人电脑视为网络,登录自己电脑视为本地 

登录别人电脑的时候它不可能以明文匹配,所以只能对你明文再次进行加密然后进行比对

这是域环境那在工作组环境是怎么去比对呢 

 

类似于证书中的签名 

 

  1. 用户登录客户端电脑

  2. (type 1)客户端向服务器发送type 1(协商)消息,它主要包含客户端支持和服务器请求的功能列表。

  3. (type 2)服务器用type 2消息(质询)进行响应,这包含服务器支持和同意的功能列表。但是,最重要的是,它包含服务器产生的Challenge。

  4. (type 3)客户端用type 3消息(身份验证)回复质询。用户接收到步骤3中的challenge之后,使用用户hash与challenge进行加密运算得到response,将response,username,challeng发给服务器。消息中的response是最关键的部分,因为它们向服务器证明客户端用户已经知道帐户密码。

  5. 服务器拿到type 3之后,使用challenge和用户hash进行加密得到response2与type 3发来的response进行比较。如果用户hash是存储在域控里面的话,那么没有用户hash,也就没办法计算response2。也就没法验证。这个时候用户服务器就会通过netlogon协议联系域控,建立一个安全通道,然后将type 1,type 2,type3 全部发给域控(这个过程也叫作Pass Through Authentication认证流程)

  6. 域控使用challenge和用户hash进行加密得到response2,与type 3的response进行比较

ok,此时此刻我们终于了解完了通信

接下来再看一篇文章

NTLM协议详解-腾讯云开发者社区-腾讯云 (tencent.com)icon-default.png?t=N7T8https://cloud.tencent.com/developer/article/2227928前面的我们都聊过了我们现在看看下面这个

上传我们的马

 ok上线了,并且我们的cobalt strike抓到了本地的hash

我们现在模拟工作组环境,不模拟域环境 ,进行抓包验证

 客户端:我有签名能力但是我不能签名

看回包

如图所示,可以看到在NTLMv2 Response响应消息下的NTProofStr字段,该字段的值是用做数据签名的Hash(HMAC-MD5)值,目的是保证数据的完整性。

而对于NTLMv2 HashNTProofStr,有如下计算公式。

· NTLMv2 Hash = HMAC-MD5(unicode(hex((upper(UserName)+DomainName))), NTLM Hash)

· NTProofStr = HMAC-MD5(challenge + blob, NTLMv2 Hash)

详细的:我上面所说文章

但是没用,如果中途篡改其中一个MIC立马就不一样了,我们只是了解一个流程

4.3漏洞概述

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS实战开发-如何实现一个自定义抽奖圆形转盘

介绍 本篇Codelab是基于画布组件、显式动画,实现的一个自定义抽奖圆形转盘。包含如下功能: 通过画布组件Canvas,画出抽奖圆形转盘。通过显式动画启动抽奖功能。通过自定义弹窗弹出抽中的奖品。 相关概念 Stack组件:堆叠容器&am…

JavaScript基础语法–详谈

JavaScript的编写方式 这里小编写一个简单代码,展示JavaScript三种编写方式 HTML代码行内(可以理解为内联样式) a.第一种方式 一个123的网址,通过点击实现浏览器显示welcome字样提升(与浏览器进行交互)…

【AI模型-机器学习工具部署】远程服务器配置Jupyter notebook或jupyter lab服务

随着AI人工智能的崛起,机器学习、深度学习、模型训练等技术也慢慢泛化,java开发有idea,web开发有vscode,那么AI开发神器肯定离不开jupyter lab(基础版jupyter notebook) Jupyter notebook部署 1. 安装jupy…

基于Python实现多功能翻译助手(上)

创建一个支持多种语言翻译并且允许通过文件拖拽来输入文本的Python窗口应用程序是一个相对复杂的任务,涉及到多个库和组件。以下是一个简化的指南,展示如何使用Python的Tkinter库创建GUI窗口,结合Googletrans库进行翻译,以及使用P…

第十四章 MySQL

一、MySQL 1.1 MySql 体系结构 MySQL 架构总共四层,在上图中以虚线作为划分。 1. 最上层的服务并不是 MySQL 独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。 2. 第二层的架构包括…

Python连接MySQL

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、整体思路二、连接流程三、表结构及代码实现 一、整体思路 二、连接流程 三、表结构及代码实现 代码块如下: import pymysqlcon pymysql.connect(h…

websocket 局域网 webrtc 一对一 视频通话的实例

基本介绍 使用websocket来 WebRTC 建立连接时的 数据的传递和交换。 WebRTC 建立连接时,通常需要按照以下顺序执行一些步骤: 1.创建本地 PeerConnection 对象:使用 RTCPeerConnection 构造函数创建本地的 PeerConnection 对象,该…

springboot共享单车系统

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于共享单车管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了共享单车管理系统,它彻底改变了过…

【JavaScript算法】DOM树层级显示

题目描述: 上述表达式的输出结果为 [DIV] [P, SPAN, P, SPAN] [SPAN, SPAN]直接上代码 let tree document.querySelector(".a"); function traverseElRoot(elRoot) {const result [];function traverse(element, level) {if (!result[level]) {resul…

跨境电商IP防关联是什么?有什么作用?

做跨境电商的朋友应该都知道IP防关联这个词,那么为何IP需要防关联呢?今天为大家来解答这个问题。 跨境电商IP防关联是指在跨境电商运营中,通过采取一系列技术手段,确保每个跨境电商账号使用独立的IP地址,以避免账号之间因为IP地址…

博鳌观察|对话百度沈抖:丰富的应用场景是中国AI赶超的最大机会

既要仰望星空,更要脚踏实地。在被巨大的技术风口裹挟了一年多后,我们与大模型的“相处方式”越来越清晰了。 3月28日,在博鳌亚洲论坛2024年年会现场,我们与百度集团执行副总裁、百度智能云事业群总裁沈抖进行了一次深度交流。 在…

智慧公厕厂家如何选择?光明源智能科技打造一流智慧公厕项目

在当今城市化进程中,智慧公厕已经成为提升城市品质、改善市民生活的重要一环。然而,要打造一流的智慧公厕项目,选择合适的厂家显得尤为重要。作为行业领军者,光明源智能科技在智慧公厕领域具有丰富的经验和卓越的技术实力。今天&a…

大数据学习-2024/3/29-oracle使用介绍

在plsql中登录ORACLE数据。 默认用户: 1、sys: 角色:数据库超级管理员账户。 权限:具有最高的权限,可以执行任何操作,包括操作数据字典和控制文件。可以创建和删除数据库对象,授予和回收其他用户…

计算机系统基础 5 物理地址的形成

历史 早期,程序员自己管理主存,通过分解程序并覆盖主存的方式执行程序 取指令和存储操作数所有的地址都是物理地址; 执行速度快,无需进行地址转换; 未采用虚拟存储机制。 1961年有人提出自动执行overlay…

Openfeign

Openfeign 相关扩展 在 2020 以前的 SpringCloud 采用 Ribbon 作为负载均衡,但是 2020 年之后,SpringCloud 吧 Ribbon 移除了,而是使用自己编写的 LoadBalancer 替代. 因此,如果在没有加入 LoadBalancer 依赖的情况下&#xff0c…

linux离线安装maven

一、下载maven 地址:Maven – Download Apache Maven 使用root权限用户登录服务器 cd /opt sudo mkdir maven cd maven 二、上传maven 使用Xftp工具 三、解压并配置环境变量 tar -zxvf tar -zxvf apache-maven-3.9.6-bin.tar.gz cd apache-maven-3.9.6/ 看到解压…

AI智能视频剪辑解决方案,便捷的视频制作体验

在数字化时代,视频内容已成为企业宣传、产品展示、品牌塑造不可或缺的重要载体。然而,传统视频剪辑方式往往耗时耗力,效率低下,无法满足企业快速响应市场变化的需求。美摄科技凭借领先的AI技术,推出了一款全新的AI智能…

游戏本笔记本更换@添加内存条实操示例@DDR5内存条

文章目录 添加内存条的意义准备工具设备拔出电源适配器并关机👺样机 内存条上的金手指安装过程Notes 安装后开机初次开机速度屏幕显示分辨率和闪烁问题检查安装后的效果 添加内存条的意义 参考双通道内存DDR5多通道内存-CSDN博客 准备工具 准备一个质量差不多的螺…

我国伺服系统市场规模逐渐扩大 未来有望实现完全国产替代

我国伺服系统市场规模逐渐扩大 未来有望实现完全国产替代 伺服系统又称为随动系统,是用于精确地跟随或复现某个过程的反馈控制系统。伺服系统主要包括驱动器、指令机构和电机等,可根据控制指令,对功率进行放大、变换与调控等处理,…

在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)

问题场景 目前我的环境变量都存储在 /etc/profile 文件中,当我通过远程 SSH 执行一些命令时,提示命令找不到,如下所示: 问题出现原因 这里找到了一张出自尚硅谷的图片,很好的解释了该问题: 这是由于 Linu…