拿下域控后,我还是对大佬的操作念念不忘
历来攻防演练中,我都笃信一个道理——吃饱了才有力气干活。所以,在清晨的客户现场,当看到大佬满意地吃完了我带来的煎饺,我知道这一战,我们作为攻击队,基本已经拿下了。
虽然说的每一句话都带着一股醋味儿,但是大佬的含金量不容置疑——理智分析战况,果断找到目标,一切行云流水。
大佬告诉我们哪些站是好打的,哪些是不好打的。我们的任务是重点关注好打的站,找找OA、邮箱这些系统给他。随后,他顺手给我们丢了一个域前置的免杀“马儿”和代理池。
听完战术指导,信心激增。话不多说,立即开始!
对抗开始
识别了一波子域名。这样看起来并不美观,秉承着技术亦是一门艺术的心态,把子域名加载进了goby:这样看着就舒服多了:
识别后的资产,可攻击的点有Web系统后台、数据库和一些中间件。测试了一下Struts2、Java、Shiro等等,均利用失败。
批量测试了一下数据库,跑出来一个弱口令。果断登录上去,看了下,数据不多,没有可用的数据,估计是个测试站,提权也没成功,放弃了。接着测试后台弱口令,这个没有验证码,尝试Top100密码爆破。
有点东西,但还是没找到可突破的点。
这时,看了下Fofa的浏览器插件,旁站有个OA系统!
众所周知,此系统在url后面加个admin.do即可出现管理员登录页面。找到这个系统,第一件事当然是丢给大佬。
大佬终究是大佬,不负所望,没过多久,就给我发了一串神秘代码,我也是心领神会,给了大佬一个友善的目光。
将大佬的神秘代码输入进去,成功点亮,拿到一台Linux的root权限shell。
过一小会儿,大佬又发来了管理后台的密码。这里可以看到邮箱的配置。密码是加密的,但是问题不大。
F12,可从前段页面的value参数查看明文密码.并尝试登录邮箱服务器,发现是可以登录成功的。
接下来我们就开始商量着要不要试试钓鱼,毕竟能直接打进办公区的话,要比从dmz区慢慢打进去要方便得多。
大佬说干就干,转头写好了一封邮件,看得我直呼内行!(图片过于敏感,此处不便展示)
片刻之后,叮咚叮咚…您有新的主机上线这清脆悦耳的声音,犹如子夜风吟,一切都是那么美好。
看着不断上线的主机,不急,让子*弹再飞一会儿。
去除重复的,一共有6台主机,发现里面还有一台Windows服务器。我们分配了一下任务,每人分配几个shell,一起先主攻这个内网。Dumphash看了下内存信息,找到几个明文的账号密码,存在域环境,先记录信息,方便后面使用。通过nettime
/domain查看,确定存在域。然后使用nslookup解析该域名,解析出来多个ip地址,应该是存在多个主备域。
使用nmap扫描这些主机的389端口,确定为域控主机,找到域控就方便多了,可以试试直接打域控。
早上就先到这里,现在正是用电脑的高峰期,所以很多操作不便现在进行,先设置计划任务做好权限维持,再简单的搜集一下信息。
过程中掉了两台主机,又上线了几台疑似沙箱的主机,估计是被发现了,样本拿去检测了。
旗开得胜
等到休息的时间,我们就开始正式干活了。上传fscan,探测ip段。
登上去了Windows服务器看了一下,看着这个页面,在做项目迭代升级,并且根据邮箱里的内容,判断这应该是开发经理在使用。
在邮箱里面还找到了一些他们内部的默认密码,这些信息都是可以尝试利用的。然后在右下角看到有IM内部通讯软件,姓名,性别,部门,ip等等信息都有了…这就是拿到了内部通讯录了,这里本想再钓一次鱼,然而大佬说了,可以,但是没必要。
现在有两个思路。一是直接打域控漏洞,二是爆破域控密码。显而易见,利用漏洞的方式为上策。所以现在的任务是他们继续去负责横向(此时大佬已经用现有的密码,拿到了20多台Windows+Linux的主机权限,权限够多就不怕掉线了)。
我来尝试漏洞利用,那么首先想到的漏洞就是CVE-2020-1472NetLogon特权提升漏洞,该漏洞不要求当前计算机在域内,只要能访问到目标域控并且知道域控主机名和域控ip即可利用。
利用该漏洞重置域控的机器密码,然后使用空密码即可登录域控。不过最主要的是要记得还原密码,不然存储在域中的凭证与本地注册表里的凭证不一致时,会导致目标脱域。
使用poc,对主备域控进行漏洞验证。众望所归,在测试了10多个域控之后,终于测试到有一台域控验证成功了!这是振奋人心的绿色!
python3poc.py 域控主机名域控ip
验证成功后,使用脚本清空域控的机器凭证。
python3poc.py 域控主机名域控ip
使用空凭证查看域内账号密码,看到有个krbtgt账号,可以生成票据。
当然这里我们就不用它了,因为第一个是sid为500的账号,那这个就是域控管理员了,后面则是密码hash,可以先尝试解密,如果能直接解出明文密码,就可以直接登录,解不出来的话就先用hash连接。
事实上,账号数量确实太多了。其实往下翻是可以看到已被清空的机器账号主机名$,密码hash已经变成了31d6cfe0d16ae931b73c59d7e0c089c0(空密码)。
python3poc.py 域名/域控主机名\$@域控ip-just-dc -no-pass
拿到了域管理员账号和hash,赶紧登录域控,这里使用wmiexec进行连接,下图登录成功,起飞!
python3wmiexec.py -hashes xxx:xxx 域名/管理员用户名@域控ip
Powershell上个cs的马,使用如下命令获取dump域控保存在本地注册表的原始主机账号密码。
regsave HKLM\SYSTEM system.saveregsave HKLM\SAM sam.saveregsave HKLM\SECURITY security.save
再使用脚本还原主机密码:
python3secretsdump.py -sam sam.save -system system.save -securitysecurity.save LOCAL
得到$MACHINE的hash:
python3reinstall_original_pw.py 域控主机名域控ip$MACHINEhash
那么到这一步之后,漏洞利用就完成了。再到cs上hashdump获取密码,拿着密码登录域控,有了域控就可以查看域内所有用户和终端服务器了,接下来的事就是搜集各种信息数据了。大功告成!打完收工!
总结
最后,梳理一下攻击路径。
首先,利用OA漏洞拿到邮箱账号密码;
然后钓鱼拿到内网域终端;
接着定位域控,使用CVE-2020-1472poc确定存在漏洞的域控;
随后重置域控机器密码,拿到域控命令执行权限,上线cs;
最后还原机器密码,读取域控内存拿到明文密码,登录域控。
不到一天的时间,从外网到拿下域控,思路正确,效率自然提升。珍惜那些可以为了比赛彻夜不眠、与小伙伴协同奋斗的岁月吧,那是为了自己而努力绽放的时光,短暂又美好。
内存拿到明文密码,登录域控。
不到一天的时间,从外网到拿下域控,思路正确,效率自然提升。珍惜那些可以为了比赛彻夜不眠、与小伙伴协同奋斗的岁月吧,那是为了自己而努力绽放的时光,短暂又美好。
最后
分享一个快速学习【网络安全】的方法,「也许是」最全面的学习方法:
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取
有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:
高清学习路线图或XMIND文件(点击下载原文件)
还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】
相关文章:

拿下域控后,我还是对大佬的操作念念不忘
历来攻防演练中,我都笃信一个道理——吃饱了才有力气干活。所以,在清晨的客户现场,当看到大佬满意地吃完了我带来的煎饺,我知道这一战,我们作为攻击队,基本已经拿下了。 虽然说的每一句话都带着一股醋味儿…...

实习-----Mybatis 框架
Mybatis 框架ORM持久化介绍 了解什么是“持久化”即把数据(如内存中的对象)保存的磁盘的某一文件中ORM概念ORM,即Object Relational Mapping,它是对象关系映射的简称。它的作用是在关系型数据库和对象之间作一个映射,是…...

【Linux】孤儿进程 | 环境变量 | 命令行参数 | 进程优先级
文章目录1. 孤儿进程2. 环境变量1. PATH环境变量证明ls是系统指令修改自己写的可执行程序对应路径2. env——查看系统环境变量3. 获取环境变量envpenvirongetenv 函数获取 (主流)4. 总结3 . 命令行参数理解命令行参数4. 进程优先级优先级与权限的区分为什么会有优先级ÿ…...

Matlab字符串相关操作-拼接、格式化
常见的有三种方法:向量拼接、strcat函数和sprintf函数1、向量拼接在matlab中字符串本质上也是一个向量,可以通过矩阵运算来实现字符串的拼接,这里随便输入两个字符串a1和b1,用矩阵形式进行拼接:a1 I love;b1 Matlab…...

死磕Spring系列,SpringBoot启动流程
参考文章:SpringBoot启动流程系列讲解 参考视频:SpringBoot启动流程 吐血推荐视频:史上最完整的Spring启动流程 超级好文:SpringBoot执行原理 参考文章:SpringBoot资源接口ResourceLoader和Resource学习 参考文章&…...

关于条件变量wait操作中锁的作用
condition_variable::wait的锁 在看C Concurrency in Action 6.2.3节的线程安全队列时,其对condition_variable的使用与常规用法有点不同,我对condition_variable::wait中锁的作用产生了疑惑:它究竟是保护的谁?于是找到了 C noti…...

JUC并发编程与源码分析笔记09-原子类操作之十八罗汉增强
基本类型原子类 AtomicInteger、AtomicBoolean、AtomicLong。 常用API: public final int get();// 获取当前的值 public final int getAndSet(int newValue);// 获取当前值,并设置新值 public final int getAndIncrement();// 获取当前的值࿰…...

含分布式电源的配电网日前两阶段优化调度模型(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...

FreeRTOS的Delay函数
两个Delay函数有两个延时函数vTaskDelay:至少等待指定个数的Tick Interrupt才能变为就绪态xTaskDelayUtil:等待到指定的绝对时刻,才能变为就绪态个人感觉这两个延时函数就是,比如一个我等3个小时,一个是我等到下午3点的…...

HCIA-HarmonyOS Application Developer——题目集1
题目1 1、一位开发人员在设计应用程序时,添加了一个Text组件和Button组件,开发样图如下所示。该开发者不能选择哪种布局方式来放置组件? A、StackLayout B、DependentLayout C、DirectionalLayout D、TableLayout 解析:(A&#…...

高性能 Message ToJavaBean 工具 【easy.server.mapper】
easy.server.mapper 介绍 后端开发中,消息转换常见问题 Map 中的数据 转换成实体Bean数组 中的数据 转换成实体BeanServet 中的 param 转换成实体Bean 以上的三个问题是最常见的消息转换困扰。 以Map 举例 常见做法是 手动转换 Map<String,Object> da…...

Web前端学习:三 - 练习
三六:风筝效果 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">*{margin: 0;padding: 0;}.d1{width: 200px;height: 200px;background: yellow;position…...

面试题:Android 中 Intent 采用了什么设计模式?
答案是采用了原型模式。原型模式的好处在于方便地拷贝某个实例的属性进行使用、又不会对原实例造成影响,其逻辑在于对 Cloneable 接口的实现。 话不多说看下 Intent 的关键源码: // frameworks/base/core/java/android/content/Intent.java public cla…...

Java数据类型与变量
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【JavaSE_primary】 文章目录字面常量数据类型变量整型变量字节型变量浮点数变量双精度浮点数单精度浮点数字符型变量布尔型变量空常量nu…...

Python为CANoe工程添加/删除DBC文件
前面文章我们对于通过COM来实现打开CANoe、导入CANoe配置工程、导入执行文件、启动CANoe软件和执行脚本;但是这只能完成最基本的功能调用,在实际得到使用过程中,特别是各家在推的CI/CD以及平台化,仅仅是实现这些功能是完全不够用的;比如dbc的添加和删除,这是我们非常必要…...

不同的产品经理特征和需要的能力
产品经理是一个管家,需要和各方沟通推动产品各个决策进展。 每天早上看看线上用户数据、看下今天要安排任务,接着就是和各方开会讨论推动产品实现。每天穿插于与 UI、用户以及完成自己的 todolist 中循环。如果公司体制完善,还要和运营、数据…...

webpack之处理样式资源
处理样式资源 本章节我们学习使用 Webpack 如何处理 Css、Less、Sass、Scss、Styl 样式资源 #介绍 Webpack 本身是不能识别样式资源的,所以我们需要借助 Loader 来帮助 Webpack 解析样式资源 我们找 Loader 都应该去官方文档中找到对应的 Loader,然后…...

Golang 接口笔记
基本介绍接口是一个数据类型,可以定义一组方法,但都不需要实现。并且interface中不能包含任何变量。到某个自定义类型要使用的时候,再根据具体情况把这些方法实现出来语法type 接口名 interface {method1(参数列表) 返回值列表method2(参数列…...

[计算机网络(第八版)]第二章 物理层(章节测试/章节作业)
章节作业 带答案版 选择题 (单选题)双绞线是用两根绝缘导线绞合而成的,绞合的目的是( )。 A. 减少干扰 B. 提高传输速度 C. 增大传输距离 D. 增大抗拉强度(单选题)在电缆中采用屏蔽技术可以带来的好处主要是( )。 A…...

[iOS 理解] Swift Runtime (1) 类
Warm up 先看一段代码: import ObjectiveCclass Obj {var x: Double 0 }let v: NSObjectProtocol Obj() as! NSObjectProtocol let result v.isKind(of: Obj.self) let size class_getInstanceSize(Obj.self)我们有一个没有继承 NSObject、没有遵循 NSObjectP…...

ASEMI低压MOS管20N06参数,20N06体积,20N06大小
编辑-Z ASEMI低压MOS管20N06参数: 型号:20N06 漏极-源极电压(VDS):60V 栅源电压(VGS):20V 漏极电流(ID):20A 功耗(PD࿰…...

常见前端基础面试题(HTML,CSS,JS)(四)
作用域和作用域链的理解 作用域 (1)全局作用域 最外层函数和最外层函数外面定义的变量拥有全局作用域所有未定义直接赋值的变量自动声明为全局作用域所有window对象的属性拥有全局作用域全局作用域有很大的弊端,过多的全局作用域变量会污染…...

RabbitMQ发布确认模式
目录 一、发布确认原理 二、发布确认的策略 (一)开启发布确认的方法 (二)单个确认模式 (三)批量确认模式 (四)异步确认模式 (五)如何处理异步未确认消…...

零基础的人如何入门 Python ?看完这篇文章你就懂了
第一部分:编程环境准备 零基础入门Python的话我不建议用IDE,IDE叫集成开发环境,这东西一般是专业程序员用来实战开发用的,好处很多,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测…...

Atcoder abc257 E
E - Addition and Multiplication 2 题意: 给你一个数字n表示你现在拥有的金额 然后给你1~9每个经营额所需要的成本, 设总经营额为x, 当前使用的经营额为y, 则每一次使用经营额时都有x10*xy 问, 如何在使用不大于成本数量的金额下, 使得经营额最高 例如: 5 5 4 3 8 1 6 7 …...

模拟退火算法改进
import numpy as np import matplotlib.pyplot as plt import math import random from scipy.stats import norm from mpl_toolkits.mplot3d import Axes3D # 目标函数 def Function(x, y): return -20 * np.exp(-0.2*np.sqrt(0.5*(x*xy*y)))\ -np.exp(0.5*(n…...

SpringBoot+HttpClient+JsonPath提取A接口返回值作为参数调用B接口
前言 在做java接口自动化中,我们常常需要依赖多个接口,A接口依赖B,C,D接口的响应作为请求参数;或者URL中的参数是从其他接口中提取返回值作获取参数这是必不可少的。那么怎么实现呢?下面就来介绍多业务依赖…...

JUC 之 CompletableFuture
——CompletableFuture Future Future 接口(FutureTask 实现类) 定义了操作异步任务执行的一些方法,如获取异步的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕例如: 主线程让一个子线程去执行任务&…...

7-vue-1
谈谈你对MVVM的理解 为什么要有这些模式,目的:职责划分、分层(将Model层、View层进行分类)借鉴后端思想,对于前端而已,就是如何将数据同步到页面上 MVC模式 代表:Backbone underscore jquer…...

OpenAPI SDK组件介绍
背景 公司成立以来,积累了数以万计的可复用接口。上层的SaaS业务,原则上要复用这些接口开发自己的业务,为了屏蔽调用接口的复杂性,基础服务开发了apisdk组件,定义了一套声明OpenAPI的注解、注解解析器,实例…...