linux系统帐号密码破解

caocao1年前教程201

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

Linux系统帐号密码破解

Linux操作系统由于其开源性、低成本等特点,在商业上运用越来越多,很多公司都采用LAMP(Linux+Apache+Mysql+PHP)典型架构。相对于Windows操作系统的密码获取技术而言,Linux密码获取比较困难。在Windows中可以通过彩虹表、键盘记录、mimikatz_trunk域名注入获取密码等技术获取包括Windows 2008 Server在内的所有操作系统密码,不管操作系统本身设置多么复杂变态的密码,但在Linux操作系统中,设置一个非常复杂的密码,破解成功的几率相对较低。在获得网站Webshell权限的前提下,通过提权等方法获得了系统权限,通过查看“/etc/shadow”文件内容获取了Linux操作系统的用户名和加密密码,获取密码文件后,如何进行破解是一大难题,本文就Linux下的密码原理,加密算法等进行分析,并对如何破解linux的密码进行研究。

1.1.1 Linux密码原理

  1. Linux密码构成

在一般Linux系统中涉及系统登录密码的两个重要文件/etc/passwd和/etc/shadow,有些特殊系统会是其它文件例如security;第一个文件记录用户信息,第二个是真正保存用户密码信息的。

  1. passed文件构成

在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,比如下面是Linux操作系统中的/etc/passwd 的两行;其格式为username:x:UID:GID:username full:username home:shell type

  • 第一字段:用户名(也被称为登录名);
  • 第二字段:口令,显示为x表示其实密码已被映射到/etc/shadow 文件中;
  • 第三字段:UID 是用户的ID 值,在系统中具有唯一特性,也即每个用户的UID的值是唯一的,更确切的说每个用户都要对应一个唯一的UID ,默认root的UID是0,拥有系统最高权限。系统用户的UID的值从0开始,是一个正整数,最大值可以在/etc/login.defs 可以查到,一般Linux发行版约定为60000; UID 的唯一性关系到系统的安全,如果在“/etc/passwd”文件中把test的UID 改为0后,test用户会被确认为root用户,test这个帐号可以进行所有root的操作。UID 是确认用户权限的标识,用户登录系统所处的角色是通过UID 来实现的,而非用户名,把几个用户共用一个UID 是危险的。一般情况下,每个Linux的发行版都会预留一定的UID和GID给系统虚拟用户占用,虚拟用户一般是系统安装时就有的,是为了完成系统任务所必须的用户,但虚拟用户是不能登录系统的,比如ftp、nobody、adm、rpm、bin、shutdown等;在Fedora 系统会把前499 个UID和GID 预留出来,添加新用户时的UID是从500开始的,GID也是从500开始,至于其它系统,有的系统可能会把前999个UID和GID预留出来;以各个系统中/etc/login.defs中的 UIDMIN 的最小值为准; Fedora 系统 login.defs的UIDMIN是500,而UID_MAX 值为60000,也就是说我们通过adduser默认添加的用户的UID的值是500到60000之间;而Slackware 通过adduser不指定UID来添加用户,默认UID 是从1000开始;
  • 第四字段:GID;用户组ID号,linux系统中除了GID外,还有一个SGID,它和SUID关系系统安全。SGID即Set GID的缩写,它出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。
  • 第五字段:用户名全称,这是可选的,可以不设置。
  • 第六字段:用户的家目录所在位置;
  • 第七字段:用户所用SHELL 的类型,常见为/bin/bash;
  1. shadow文件构成

/etc/shadow文件是/etc/passwd 的影子文件,这个文件并不由/etc/passwd而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息,比如用户的有效期限等;这个文件只有root权限可以读取和操作。/etc/shadow 文件的内容包括9个段位,每个段位之间用:号分割;通过研究发现即使两个帐号的密码相同,其密码加密值也不一样。其各个字段的含义如下:

  • 第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的;
  • 第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的;
  • 第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化;
  • 第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASSMINDAYS 中有定义;
  • 第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASSMAXDAYS 中定义;
  • 第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASSWARNAGE 中定义;
  • 第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用;
  • 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
  • 第九字段:保留字段,目前为空,以备将来Linux发展之用;

例如root帐号在etc/shadow文件中的表现方式为:

root:$1$kbIAhX/R$PiLL1U.n6bivtIr4oTi2y0:15377:0:99999:7:::

1.1.2 Linux密码文件位置

绝大部分Linux操作系统的密码文件为shadow,但也有一些特殊的Linux/Unix操作系统的密码文件名称为passwd,而且密码文件所在位置也不一样。下面是一些Linux常见系统的密码文件位置:

  • Linux/etc/shadow
  • SystemV Release 4.2 /etc/security
  • SystemV Release 4.0 /etc/shadow
  • SunOS 5.0 /etc/shadow
  • SCOUnix / tcb /auth/files/
  • OSF/1 /etc/passwd
  • HP-UX /.secure/etc/ passwd
  • BSD4.x /etc/master.passwd
  • AIX3 /etc/security/passwd
  • IRIX5 /etc/shadow

1.1.3 Linux系统采用的加密算法

  1. 查看密码的加密算法

Linux帐户的密码加密后存放于/etc/shadow文件中。对于Linux操作系统的密码采用哪种加密方式,取决于/etc/pam.d/system-auth或者/etc/pam.d/passwd文件定义,通过more /etc/pam.d/system-auth或者authconfig --test | grep hashing命令可以获取操作系统使用哪种加密算法,目前有sha256、sha512和md5加密算法。在Red Hat Enterprise Linux Server中,可以通过authconfig --test | grep hashing命令来获取当前系统帐号的密码加密算法。

  1. 常见的Linux/Unix加密算法

Linux/UNIX操作系统目前采用5种加密算法,可以通过加密后的密码值来识别,主要是通过帐号后面的$X来判断。在hash值中两个“$”符号之间的数字代表不同的加密算法,系统不同所使用的算法也不尽相同。第二个“$”符号之后的字符串就是salt值,加密的时候需要用到(取每八个字符的每个字符的低7个bit位(取得的结果为01串)),然后得到8*7=56个bit位,然后用一定的规则反复加密,返回指向包含13个可打印的ASCII码字符([a-zA-Z0-9./])的指针,通常取前两位作为salt位。第三个“$”后面为密码经过hash变化后的值。在Hash值中头两字节为$1表示MD5加密算法,$2表示使用Blowfish加密算法,$5表示使用SHA-256加密算法,$6表示使用SHA-512加密算法,其余为标准的DES例如“root:$1$kbIAhX/R$PiLL1U.n6bivtIr4oTi2y0:15377:0:99999:7:::”其加密算法为md5。数字和所使用的加密算法以及字符串位数对应关系:

  • 1: MD5 ,(22位)
  • 2a: Blowfish,只在有一部分linux分支中使用的加密方法
  • 5: SHA-256 (43位)
  • 6: SHA-512 (86位)

后面两种加密算法只在glibc2.7版本之后才支持。

1.1.4 Linux密码及相关操作

  1. Linux密码操作

对于Linux密码操作主要增加、删除和修改,第一次添加用户时需要设定一个密码。修改密码使用“passwd”,删除密码在删除用户时系统自动删除设置的密码。

  • (1).读取密码文

读取密码加密文件必须具备Root权限,通过“cat /etc/shadow”命令来读取shadow文件的内容,通过“cat /etc/passwd”查看用户信息,该文件普通用户权限即可查看。

  • (2)设置密码

“passwd username”为username用户设置密码,比如“passwd mysql”就是为mysql用户设置密码,后面根据提示需要输入两次用户密码。

  • (3)添加和删除用户

useradd和adduser用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。例如命令“useradd antian365 -u 644”,就是在系统中增加一个用户antian365,同时指定用户所在组GID为644。删除用户命令为“userdel username”,例如删除antian365用户命令为“userdel antian365”

  • (4)linux查看用户的UID和GID

使用“id”命令获取当前用户的uid,gid等信息,例如获取当前用户root的信息,通过“id username”获取指定用户的uid,gid等信息。

  1. 生成基于md5加密算法的linux密码
  • (1)自定义设定密码

openssl passwd -1 -salt $(< /dev/urandom tr -dc '[:alnum:]' |head -c 32)

  • (2)设置密码为123456

echo "123456" | openssl passwd -1 -salt $( passwd

然后使用john进行破解。John the Ripper一共有简单、字典、增强和外挂四种破解模式。

1.1.7 使用hydra暴力破解Linux密码

hydra是世界顶级密码暴力密码破解工具,支持几乎所有协议的在线密码破解,功能强大,其密码能否被破解关键取决于破解字典是否足够强大。在网络安全渗透过程中是一款必备的测试工具,配合社工库进行社会工程学攻击,有时会获得意想不到的效果。

  1. 简介

hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码,目前已经被Backtrack和kali等渗透平台收录,除了命令行下的hydra外,还提供了hydragtk版本(有图形界面的hydra),官网网站:,目前最新版本为8.1下载地址:,Windows版本下载地址:,它可支持AFP, Cisco AAA, Cisco auth, Ciscoenable, CVS, Firebird, FTP, uHTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET,HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET,HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC,LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle,PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB,SMTP, SMTP Enum, SNMP, SOCKS5, SSH (v1 and v2), Subversion, Teamspeak (TS2), Telnet,VMware-Auth, VNC and XMPP等类型密码。

  1. 安装与使用
  • (1)Debian和Ubuntu安装

如果是Debian和Ubuntu发行版,源里自带hydra,直接用apt-get在线安装:

sudo apt-get install libssl-dev libssh-devlibidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-devfirebird2.1-dev libncp-dev hydra

Redhat/Fedora发行版的下载源码包编译安装,先安装相关依赖包:

yum install openssl-devel pcre-develncpfs-devel postgresql-devel libssh-devel subversion-devel

  • (2)centos安装
# tar zxvf hydra-7.6-src.tar.gz
# cd hydra-6.0-src
# ./configure
# make
# make install
  • (3)Windows下安装与使用

Windows版本是编译好的,最新版本有的可能需要环境支持,下载后直接在命令提示符下运行即可,建议在thc-hydra-windows程序目录新建cmd.bat,其内容为cmd.exe,运行cmd.bat后执行hydra即可出现提示符。对于有端口的需要指定端口号,例如对某ssh端口号为59878的ssh服务器进行暴力破解命令为:hydra -l root -p f*******B -s 59878 127.0.0.1 ssh,可以将结果生成为txt文件,例如hydra -l root -p f*******B -s 59878 127.0.0.1 ssh ->>s.txt,对多个IP地址进行相同密码破解,并将结果保存在s.txt中。

  1. 使用hydra

BT5和kali都默认安装了hydra,在kali中单击“kali Linux”-“Password Attacks”-“Online Attacks”-“hydra”即可打开hydra。在centos终端中输入命令/usr/local/bin/hydra即可打开该暴力破解工具,除此之外还可以通过hydra-wizard.sh命令进行向导式设置进行密码破解。

  1. 安装libssh

如果不安装libssh,运行hydra破解账号时会出现错误,显示错误提示信息:[ERROR] Compiled without LIBSSH v0.4.x support, module is notavailable! 在centos下依次运行以下命令即可解决:

yum install cmake
wget 
tar zxf libssh-0.4.8.tar.gz
cd libssh-0.4.8
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug-DWITH_SSH1=ON ..
make
make install
cd /test/ssh/hydra-7.6 (此为下载hydar解压的目录)
make clean
./configure
make
make install
  1. hydra参数详细说明
hydra [[[-l LOGIN|-L FILE] [-p PASS|-PFILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-wTIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46][service://server[:PORT][/OPT]]
-l LOGIN 指定破解的用户名称,对特定用户破解。
-L FILE 从文件中加载用户名进行破解。
-p PASS小写p指定密码破解,少用,一般是采用密码字典。
-P FILE 大写字母P,指定密码字典。
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。
-t TASKS 同时运行的连接的线程数,每一台主机默认为16。
-M FILE 指定服务器目标列表文件一行一条
-w TIME 设置最大超时的时间,单位秒,默认是30s。
-o FILE 指定结果输出文件。
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-v / -V 显示详细过程。
-R 继续从上一次进度接着破解。
-S 采用SSL链接。
-s PORT 可通过这个参数指定非默认端口。
-U服务模块使用细节
-h更多的命令行选项(完整的帮助)
server目标服务器名称或者IP(使用这个或-M选项)
service指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get}http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysqloracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icqsapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等
OPT一些服务模块支持额外的输入(-U用于模块的帮助)
  1. 破解ssh账号

破解ssh账号有两种方式,一种是指定账号破解,一种是指定用户列表破解。详细命令如下:

  • (1)hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh

例如输入命令“hydra -l root -P pwd2.dic -t1 -vV -e ns 192.168.44.139 ssh”对IP地址为“192.168.44.139”的root账号密码进行破解,如图10所示,破解成功后显示其详细信息。

“hydra -l root -P pwd2.dic -t1 -vV -e ns -o save.log 192.168.44.139 ssh ”将扫描结果保存在save.log文件中。

相关文章

Kali Linux中前十名的Wifi攻击工具分别是什么

Kali Linux中前十名的Wifi攻击工具分别是什么

根据您提供的文章内容,以下是对文章的简要总结: 这篇文章主要介绍了Kali Linux中前十名的Wifi攻击工具。对于那些对此不太了解的新手来说,这可能是一个难题。为了帮助大家解决这个问题,下面将详细...

怎么装服务器系统教程 如何用u盘安装windows服务器系统?

怎么装服务器系统教程 如何用u盘安装windows服务器系统?

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 如何使用U盘安装Wind...

Kali2020.01安装过程(超详细)

Kali2020.01安装过程(超详细)

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网...

Kali Linux 2023.2系统发布

Kali Linux 2023.2系统发布

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 IT之家 6 月 5 日...