获取中...

-

Just a minute...

这其实本质是一个社会工程学问题
至于为什么 在文章的最后想必大家也能理解
假设现在有一个人短时间离开电脑之后并未锁屏 那么旁人就可以通过U盘拷贝重要密码文件的方式获取他的密码

密码文件获取

windows并不会直接存储你的明文密码 它存的是一串hash加密之后的乱码
当你设置密码的时候 系统会用一种hash算法将你的密码转换成一串固定长度的字符这就是NTLM哈希
当你登录的时候 系统会将你输入的密码再次哈希 两次哈希结果相同就会成功登录
那么现在我们的目标很明确了 我们需要拿到这一串哈希 而它就存在我们的系统注册表里面 具体位置就是SAM和SYSTEM这两个文件
攻击者趁攻击目标离开的间隙 插入u盘 用管理员身份运行命令行
然后输入以下命令

1
2
reg save HKLM\sam ./sam.save
reg save HKLM\system ./system.save

reg save是Windows自带的命令行工具 用于将指定的注册表项 子项 值保存在一个文件之中
HKLM\sam与HKLM\system:是指定了本地机器(HKLM)下单安全账户管理器(sam)和解密密钥(system):一个存储密码哈希值 一个存储解密的密钥
后面两个路径./sam.save./system.save是保存路径

这样一来就可以在本目录下找到这两个文件了 我们将其拷走
感谢ZLARYY师傅的u盘支持
在真实操作之中最好将靶机的两个生成文件删去 抹除操作痕迹 我这里就懒得删了

kali操作

将u盘之中的两个文件复制到kali之中 可以使用创建共享文件夹等方式 在这里不做展示了
接下来我们要从这两个文件里面提取hash

1
impacket-secretsdump -sam sam.save -system system.save LOCAL

这里我们用到impacket工具里面专门用于从windows之中提取凭据和机密信息的Python脚本
-sam:指定导出的包含加密密码哈希值的sam文件
-system:指定到处都 包含解密密钥的system文件
LOCAl:所有文件都在本地 这样工具就会直接对本地指定的文件进行操作
这样一来就会获取这台电脑上所有用户的哈希(不放出来了 自己试)

攻击者会得到很多串字符 比如

1
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
  • 第一部分:账户名
  • 第二部分:相对标识符(RID)
  • 第三部分:LM哈希
  • 第四部分:NTLM哈希
    我们需要的部分就是这个NTLM哈希 将其保存在一个文件之中 就叫hashes .txt吧

那么我们下一步还要获得密码 这里我们就使用改密码爆破的方式破解
这里我们是使用cupp这个工具来操作
这是一款基于Python编写的交互式密码字典生辰该工具 核心思想就是利用社会工程学信息 为特定目标生成高度定制化 高成功率的密码(目标要是脸滚键盘瞎设置密码 这个工具就没招了)
主要命令行选项有以下几个

1
2
3
4
5
6
7
-h:显示帮助信息
-i:交互模式
-w:分析现有字典文件
-l:从在线仓库下载预置大型字典
-a:从Alecto数据库之中解析默认的用户名和密码组合
-v:显示程序版本信息

使用命令cupp -i进入交互式页面 接下来就是填写一些你对目标信息的了解 诸如:

  • 姓名
  • 生日
  • 伴侣孩子名字
  • 昵称
  • 宠物名称
  • 公司名称
  • 是否密码末尾添加特殊字符或者随机字符
    完成这些信息的填写之后cupp会生成一个包含大量可能密码的文件 在这里面大概率就有目标的密码
    接着我们使用hashcat工具来破解一下
1
sudo hashcat -m 1000 hashes.txt su.txt

-m是指定密码类型 而1000是NTLM哈希的专用代码
后面的第一个参数hashes .txt是目标文件 su.txt是字典

等待之后若cupp根据社会工程学生成的可能密码中有真是密码 就会显示出来 自己去试一下吧
报错的化可能是内存不足 分配大一点就行

总结

看到这里 其实你也发现了 这个方法是存在很大的局限性的 它需要攻击者有偷盗哈希文件的时间 还需要攻击者对目标很了解 但是生活之中其实很多时候就是这些微小的细节暴露了安全问题

相关文章
评论
分享
  • URLDNS链入门

    在一些测试环境之中 目标是否发生反序列化是无回显的 是否有一种办法能够测试目标是否能够发生反序列化呢?有的兄弟有的如果我们能让目标服务器通过反序列化发起一次DNS解析请求 那么在接收到请求的时候不就知道了吗那么这就是我们需要学习的UR...

    URLDNS链入门
  • 无痛入门java反序列化

    在学习URLDNS链以及之后的cc链之前 我们得先掌握java反序列化的基础知识 序列化和反序列化序列化把一个java对象转换成字节序列以便存储或者通过网络传输反序列化把字节序列还原成java对象 12序列化:对象->字符串反...

    无痛入门java反序列化
  • 用租房视角学习动态代理

    关于这一部分的知识点 我们先从静态代理说起 静态代理什么是代理? 代理就是:不操作目标对象而是通过一个中间人(代理)来间接操作最常见的现实例子就是租房问题:你要租房子 不需要直接找到房东 而是通过租房中介 中介帮你去和房东沟通 那么...

    用租房视角学习动态代理
  • 动态加载字节码

    动态加载字节码是一种让JVM可以接收由程序在运行时动态产生的字节数组并将其装在的能力 本义是让程序变得更加灵活 但是也产生了一定的安全问题 核心方法在java.lang.ClassLoader类中有一个方法 1protected fi...

    动态加载字节码
  • 类加载机制漫谈

    解释java字节码为什么需要编译成class文件我们首先要理解JVMjava是是一种混合型语言有编译的步骤也有解释步骤我们编写的java文件需要被编译成class文件之后才能被JVM运行 什么是class文件传统编译型语言(C C++...

    类加载机制漫谈
  • 反射随笔

    反射概念在java之中 万物都是对象 包括“类本身也是一个对象”(属于java.lang.Class类的对象) 反射的本质就是在程序运行期间 通过操控这个Class对象 反向解析和操控它所代表的哪个类里面的内容(构造器,属性,方法) ...

    反射随笔
  • LangChain反序列化

    最近在打SCTF的时候遇到一个LangChain反序列化的题目 比较新颖 于是想着学习一下 LangChain介绍LangChain是一个用于构建大语言模型应用的开源框架 通过这个可以把常用的组件抽象成可串联的链(Chain)举个例...

    LangChain反序列化
  • filter-chain漏洞演示

    这个漏洞链被称为CNEXT 由安全员Charles Fol披露 核心思想是利用系统内置的看似无害的模块(流过滤器)的巧妙组合 在受限的web环境之中执行命令 原理讲解filter协议对于filter伪协议 我们肯定都不陌生这个伪协议允...

    filter-chain漏洞演示
  • 死亡绕过

    前言以及环境介绍本文是对p神文章谈一谈php://filter的妙用 | 离别歌知识点的学习 本文主要介绍使用filter伪协议进行死亡绕过的三种方式 测试环境:小皮面板测试代码:exit.php 12345<...

    死亡绕过
  • Phar反序列化漏洞演示

    前言我们在之前学习的反序列化漏洞 无一不是利用了unserialize()这个函数 但是我们没有去考虑 假设此时的题目并没有给我们这个函数 我们还能否实现反序列化呢 其实是可以的 在2018年的BlackHat 大会上 Sam Tho...

    Phar反序列化漏洞演示
Please check the parameter of comment in config.yml of hexo-theme-Annie!