当忘记操作系统的密码或者攻击某台主机时,需要知道该系统中某个用户的用户名和密码。本节将分别介绍破解Windows和Linux用户密码。

8.6.1 破解Windows用户密码

Windows系统的用户名和密码保存在SAM(安全账号管理器)文件中。在基于NT内核的Windows系统中,包括Windows 2000及后续版本,这个文件保存在“C:\Windows\System32\Config”目录下。出于安全原因,微软特定添加了一些额外的安全措施将该文件保护了起来。首先,操作系统启动之后,SAM文件将同时被锁定。这意味着操作系统运行之时,用户无法打开或复制SAM文件。除了锁定,整个SAM文件还经过加密,且不可见。

幸运的是,现在有办法绕过这些限制。在远程计算机上,只要目标处于运行状态,就可以利用Meterpreter和SAM Juicer获取计算机上的散列文件。获得访问系统的物理权限之后,用户就可以在其上启动其他的操作系统,如在USB或DVD-ROM设备上的Kali Linux。启动目标计算机进入到其他的操作系统之后,用户可以使用Kali中的John the Ripper工具来破解该Windows用户密码。

使用John the Ripper工具破解Windows用户密码。具体操作步骤如下所示。

(1)检查当前系统中的硬盘驱动。执行命令如下所示:

输出的信息表示当前系统中有一块磁盘,并只有一个分区。该文件系统类型是NTFS,也是Windows系统的所存放的磁盘。

(2)挂载硬盘驱动。执行命令如下所示:

root@kali:~# mkdir /sda1        #创建挂载点
root@kali:~# mount /dev/sda1 /sda1/ #挂载/dev/sda1分区

执行以上命令后,没有任何输出信息。

(3)切换目录,进入到Windows SAM文件的位置。执行命令如下所示:

root@kali:~# cd /sda1/WINDOWS/system32/config/

在该目录中,可以看到SAM文件。

(4)使用SamDump2提取SAM文件。执行命令如下所示:

root@kali:/sda1/WINDOWS/system32/config# samdump2 SAM system > /root/hash.txt
samdump2 1.1.1 by Objectif Securite
http://www.objectif-securite.ch
original author: ncuomo@studenti.unina.it
Root Key : SAM

从输出信息中可以看到提取了SAM文件。将该文件的内容重定向到了/root/hash.txt文件中。

(5)运行john命令,实现密码攻击。执行命令如下所示:

root@kali:/sda1/WINDOWS/system32/config# /usr/sbin/john /root/hash.txt --format=nt
Created directory: /root/.john
Loaded 6 password hashes with no different salts (NT MD4 [128/128 SSE2 + 32/32])
(Guest)
guesses: 4 time: 0:00:03:13 0.09% (3) (ETA: Mon May 12 06:46:42 2014) c/s: 152605K trying: 2KRIN.P - 2KRIDY8
guesses: 4 time: 0:00:04:26 0.13% (3) (ETA: Mon May 12 04:02:53 2014) c/s: 152912K trying: GR0KUHI - GR0KDN1
guesses: 4 time: 0:00:04:27 0.13% (3) (ETA: Mon May 12 04:15:42 2014) c/s: 152924K trying: HKCUUHT - HKCUGDS

8.6.2 破解Linux用户密码

破解Linux的密码基本上和破解Windows密码的方法非常类似,在该过程中只有一点不同。Linux系统没有使用SAM文件夹来保存密码散列。Linux系统将加密的密码散列包含在一个叫做shadow的文件里,该文件的绝对路径为/etc/shadow。

不过,在使用John the Ripper破解/etc/shadow文件之前,还需要/etc/passwd文件。这和提取Windows密码散列需要system文件和SAM文件是一样的道理。John the Ripper自带了一个功能,它可以将shadow和passwd文件结合在一起,这样就可以使用该工具破解Linux系统的用户密码。本小节将介绍破解Linux用户密码的方法。

使用John the Ripper工具破解Linux用户密码。具体操作步骤如下所示。

(1)使用unshadow提取密码散列。执行命令如下所示:

root@kali:~# unshadow /etc/passwd /etc/shadow > /tmp/linux_hashes.txt

执行以上命令后,会将/etc/passwd/文件与/etc/shadow/文件结合在一起,生成一个叫做linux_hashes.txt的文件,保存在/tmp/目录中。

(2)破解Linux用户密码。执行命令如下所示:

root@kali:~# john --format=crypt --show /tmp/linux_hashes.txt
root:123456:0:0:root:/root:/bin/bash
bob:123456:1000:1001::/home/bob:/bin/sh
alice:123456:1001:1002::/home/alice:/bin/sh
3 password hashes cracked, 0 left

从输出的结果中,可以看到当前系统中共有三个用户,其密码都为123456。

注意:使用John the Ripper开始破解Linux密码之前,需要使用支持破解不同类型密码散列的John the Ripper版本。如果用错版本或者使用未打补丁的John the Ripper,程序将返回错误信息No password hashes loaded(没有价值密码散列)。大多数现代Linux系统都使用SHA散列加密算法保存密码。

Kali-linux破解操作系统用户密码的更多相关文章

  1. 破解Linux系统root用户密码

    linux系统的启动过程  在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程 开机自检(POST),初始化部分硬件 搜素可用于引导的启动设备(如磁盘的MBR) 读取并将控制权 ...

  2. 破解root用户密码 -rwx权限

    破解root用户密码(本地登录) 1.光驱要放入系统光盘 2.重启os 3.修改启动菜单进入1运行级别 4.设置新密码 5.重启os linux的运行级别(默认3或5): 查看默认的运行级别 cat ...

  3. kali linux 2018.2 mysql密码修改后无效,外部无法连接问题。

    kali linux 2018.2 mysql密码修改后无效,外部无法连接问题 Kali Linux 2018.2 默认MySQL数据库是mariadb,可能和MySQL有些细微的变化,只需要做如下处 ...

  4. Kali Linux破解wifi密码(无须外置网卡)

    环境准备:  方式一(选择该方式):Kali Linux.笔记本一台.U盘(至少8G)  方式二:Kali Linux.外置网卡.笔记本一台.VM   特别说明,主要是使用方式一进行破解,如果有外置网 ...

  5. 如何重置硬盘遭到“损坏”的Linux系统root用户密码

    传统印象下Linux是非常坚不可摧的,具有千年不更新,万年不重启的美名.而随着虚拟化的推进,很多跑在虚拟化上的Linux由于先前基础架构的脆弱,变得适应性“越来越不好”,体现在IP存储如果出现节点故障 ...

  6. 【Linux】Linux 找回Root用户密码

    Root密码破解 Linux 忘记Root密码 ? 技术学习基本原则:不作恶 一.破解步骤 1.在系统启动时进入grub选项菜单 2.在grub选项菜单按e进入编辑模式 3.编辑kernel那行添加/ ...

  7. Linux批量修改用户密码

    对系统定期修改密码是一个很重要的安全常识,通常,我们修改用户密码都使用passwd user这样的命名来修改密码,但是这样会进入交互模式,即使使用脚本也不能很方便的批量修改,除非使用expect这样的 ...

  8. linux删除某用户密码

    1.清空一个linux用户密码 # passwd -d user1 passwd: password expiry information changed. 2.指定key登录 ssh port111 ...

  9. python之05 操作系统用户密码修改

    ubuntu的操作系统修改密码的操作方法: 一.在系统启动时按住shift键,出现下图的界面 二.按下e进入命令行,找到下图红色框中的文字并修改成rw init=/bin/bash 然后按F10启动, ...

随机推荐

  1. MySQL 数据类型总结及选取准则

    整数 整数有 TINYINT, SMALLINT, MEDIUMINT, INT 和 BIGINT 类型. 占用    8          ,  16            24,          ...

  2. K:线性表的实现—顺序表

    所谓顺序表,就是顺序存储的线性表.顺序存储就是用一组地址连续的存储单元依次存放线性表中各个数据元素的存储结构. 线性表中所有数据元素的类型是相同的,所以每一个数据元素在存储器中占用相同的大小的空间.假 ...

  3. Gradle修改缓存路径 和 Gradle修改Maven仓库地址

    Gradle修改缓存路径 修改gradle启动脚本进入gradle安装的bin目录,使用文本编辑器打开gradle.bat文件,在如图的位置添加以下语句 set GRADLE_OPTS="- ...

  4. 简单的sqlserver批量插入数据easy batch insert data use loop function in sqlserver

    --example 1: DECLARE @pid INT,@name NVARCHAR(50),@level INT,@i INT,@column2 INT SET @pid=0 SET @name ...

  5. 04.CSS动画示例-->烟花

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. ssm 注解@ResponseBody 返回json 乱码问题

    方法一:在@RequestMapping上加入 produces方法 @RequestMapping(value = "/upload.do",method = RequestMe ...

  7. Servlet - Reasource loading

    1. Load db3.properties String path = this.getServletContext().getRealPath("/WEB-INF/classes/db/ ...

  8. OpenStack 学习笔记 (一)

    后续的文章都贴在:臭蛋上 这一系列笔记已经记录很长一段时间了,种种原因没有贴出来,现在陆陆续续的贴出来.可能由于自己理解的 错误和疏忽,导致存在错误,欢迎大家指正,交流. 所有的源码分析都是基于Ope ...

  9. 学习使用PRINCE2能带来什么益处?

    使用PRINCE2有许多好处.它除了可重复使用.可升级.非常灵活之外,是在成百上千名有经验的项目经理们的帮助下,总结他们多年积累的实践经验和专业技术建立的. PRINCE2 开发于1989年并从此不断 ...

  10. linux命令大全比较完整

    转:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是 ...