黑客攻防:实战加密与解密(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-22 02:24:09

点击下载

作者:陈小兵

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

黑客攻防:实战加密与解密

黑客攻防:实战加密与解密试读:

前言

在出版《黑客攻防实战案例解析》、《Web渗透技术及实战案例解析》和《安全之路——Web渗透技术及实战案例解析(第2版)》后,我和安天365团队经过讨论,决定将技术进行细化,进行专题研究,编写一系列黑客攻防实战方面的图书。经过近一年的努力,终于将《黑客攻防:实战加密与解密》完成。

本书从Web渗透的专业角度系统探讨黑客安全攻防中涉及的密码获取与破解技术,内容尽可能贴近实战。攻击与防护是辩证统一的关系,掌握了攻击技术,也就掌握了相应的防护技术。密码是黑客渗透中最为关键的部分,进入VPN需要密码,进入邮箱需要密码,进入域控服务器也需要密码。在渗透进服务器后,如何尽可能多地搜集和获取密码,是黑客获得更多权限的关键。

本书以Web渗透攻击与防御为主线,主要通过典型的案例来讲解密码的保护和破解技术。在每一个案例中,除了技术原理外,还对技术要点进行了总结和提炼。掌握和理解这些技术后,读者在遇到类似的场景时可以自己进行操作。本书采用最为通俗易懂的图文解说方式,按照书中的步骤即可还原攻防情景。通过阅读本书,初学者可以很快掌握Web攻防的流程、最新的技术和方法,有经验的读者可以在技术上更上一层楼,让攻防技术在理论和实践中更加系统化。

本书共分7章,由浅入深,依照Web攻防密码保护与获取的技术特点安排内容,每一节都是一个具体技术的典型应用,同时结合案例给予讲解,并给出一些经验总结。本书主要内容安排如下。

第1章 Windows操作系统密码的获取与破解

介绍目前黑客攻防过程中如何获取Windows操作系统的密码,如何使用LC5、Ophcrack、Hashcat等工具对获取系统密码Hash值进行快速破解,以及如何安全设置操作系统的密码和如何检查系统是否存在克隆账号等。

第2章 Linux操作系统密码的获取与破解

介绍Linux操作系统root账号和密码的获取与破解,使用fakesu记录root用户密码,Hydra暴力破解密码,读取Linux保存的密码等。

第3章 数据库密码的获取与破解

介绍常见的数据库加密方式,破解Access密码,破解MySQL数据库密码,通过网页文件获取数据库账号和口令,扫描获取SQL Server肉机,通过sa权限、MySQL root提权等。

第4章 电子邮件密码的获取与破解

电子邮箱是存储私密和敏感信息的重要位置。本章主要介绍如何快速获取浏览器中保存的邮箱和网站等的密码,如何获取Foxmail等软件保存的密码,以及如何扫描和攻击邮箱口令等,并给出了相应的防范建议。

第5章 无线网络密码的获取与破解

介绍如何使用CDlinux无线破解系统破解无线网络的密码,如何获取系统保存的无线网络密码,以及如何利用公共无线网络密码渗透并获取他人的邮箱口令等。

第6章 App密码的获取与破解

本章介绍如何对App程序进行反编译并获取程序中的密码等信息,同时对手机木马反编译、手机锁等技术进行了探讨。

第7章 其他密码的获取与破解

本章主要介绍pcAnywhere、VNC等账号和口令的破解,讨论Discuz!论坛密码记录及安全验证问题暴力破解、一句话密码破解获取网站WebShell,以及使用Burp Suite破解WebShell密码、手工检测黑客工具“中国菜刀”是否包含后门等。

虽然本书内容已经比较丰富和完整,但仍然无法涵盖所有的黑客攻防技术。技术的探索没有止境,更多的工具和方法,读者可以在日常学习和工作中去探索和发现。

资源下载

笔者在书中提到的所有相关资源可以到安天365网站(http://www.antian365.com)下载。特别是作者在多年工作中收集的渗透工具包,也在安天365网站免费提供下载。

特别声明

本书的目的绝不是为那些怀有不良动机的人提供支持,也不承担因为技术被滥用所产生的连带责任。本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全问题带来的经济损失。

由于作者水平有限,加之时间仓促,书中疏漏之处在所难免,恳请广大读者批评指正。

反馈与提问

读者在阅读本书过程中遇到任何问题或者有任何意见,都可以直接发电子邮件至antian365@gmail.com进行反馈。

读者也可以加入Web安全图书交流QQ群(436519159)进行交流。

致谢

参加本书编写工作的有陈小兵、刘晨、黄小波、韦亚奇、邓火英、刘漩、庞香平、武师、陈尚茂、邱永永、潘喆、孙立伟。

感谢电子工业出版社对本书的大力支持,尤其是潘昕编辑为本书出版所做的大量工作。感谢美工对本书进行的精美设计。

借此机会,还要感谢多年来在信息安全领域给我教诲的所有良师益友,感谢众多热心网友对本书的支持。

最后要感谢我的家人,是他们的支持和鼓励使本书得以顺利完成。

本书集中了安全365团队众多“小伙伴”的智慧。我们是一个低调潜心研究技术的团队,我衷心地向团队的所有成员表示感谢,感谢雨人、Cold、imiyoo、cnbird、pt007、Mickey、Xnet、fido、指尖的秘密、Leoda、pt007、Mickey、YIXIN、终隐、fivestars、暖色调の微笑、幻想弦乐、Unsafe、雄究究、gh0stbo、人海孤鸿、LCCL等,是你们给了我力量,给了我信念。作者2016年3月于北京第1章Windows操作系统密码的获取与破解

Windows操作系统是目前世界上最为流行的、使用最为广泛的操作系统之一,由于操作简单、实用、方便等特点,深受个人计算机用户喜爱。也正因如此,Windows是最易受到攻击的操作系统,入侵者为了长期控制Windows个人计算机和服务器,除了安装木马程序外,还必须获取操作系统本身的账号和密码。所以,Windows系统密码的获取与破解是攻防的必备基础,是后期继续渗透的前提和关键,掌握Windows操作系统密码Hash的获取和破解至关重要。

本章着重介绍Windows操作系统如何通过GetHashes、gsecdump等工具快速获取密码Hash值并破解其密码,同时对扫描3389口令、自动获取3389口令、安全设置操作系统密码、检查系统账号是否被克隆等内容进行了介绍。本章主要内容● 使用GetHashes获取Windows系统密码● 使用gsecdump获取Windows系统密码● 使用Quarks PwDump获取域控密码● 使用PwDump获取系统账号和密码● 使用SAMInside获取及破解Windows系统密码● Windows Server 2003域控服务器用户账号和密码的获取● 使用Ophcrack破解系统Hash密码● 使用oclHashcat破解Windows系统账号和密码● 使用L0phtCrack破解Windows和Linux的密码● 通过hive文件获取系统密码Hash● 使用Fast RDP Brute破解3389口令● Windows口令扫描攻击● 使用WinlogonHack获取系统密码● 检查计算机账号克隆情况● 安全设置操作系统的密码1.1 使用GetHashes获取Windows系统密码

对入侵者来说,获取Windows口令是整个攻击过程中至关重要的一环,拥有用户的口令将使内网渗透和守控更加容易。Windows系统中的Hash密码值主要由LM-hash值和NTLM-hash值两部分构成,一旦入侵者获取了系统的Hash值,通过LC5及彩虹表等破解工具就可以很快获取系统的密码。

本节主要探讨如何使用GetHashes工具获取系统的Hash值,并对Hash值的生成原理等知识进行讲解,最后介绍了一些有关Hash破解方面的技巧。1.1.1 Hash的基础知识

本节介绍与Hash相关的基础知识。

1.Hash的定义

Hash,一般翻译为“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,Pre-Image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,故不可能从散列值来唯一确定输入值。简单地说,Hash就是一种将任意长度的消息压缩到某一固定长度的消息摘要函数。

2.Hash的应用

Hash主要用于信息安全领域的加密算法,它把一些不同长度的信息转化成杂乱的128位编码,这种编码叫做Hash值。可以说,Hash就是找到数据内容和数据存放地址之间的映射关系。

3.Hash算法在密码上的应用

MD5和SHA1可以说是目前应用最广泛的Hash算法,它们都是以MD4为基础设计的,下面简单介绍一下。● MD4(RFC 1320)是MIT的Ronald L. Rivest在1990年设计的,“MD”是“Message Digest”的缩写。MD4在32位字长的处理器

上通过高速软件实现,它是基于32位操作数的位操作来实现

的。● MD5(RFC 1321)是Rivest于1991年对MD4的改进版本。它仍

以512位分组来输入,其输出与MD4相同,是4个32位字的级

联。MD5比MD4来得复杂,并且速度要慢一些,但MD5比MD4更

安全,在抗分析和抗差分方面表现更好。● SHA-1是由NIST NSA设计的,与DSA一起使用。它对长度小于

264位的输入产生长度为160位的散列值,因此抗穷举(Brute-

Force)性更好。SHA-1设计时基于和MD4相同的原理,并且模

仿了该算法。

Hash算法在信息安全方面的应用主要体现在以下3个方面。(1)文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这两种校验并没有抗数据篡改的能力,它们在一定程度上能检测并纠正数据传输中的信道误码,但不能防止对数据的恶意破坏。MD5 Hash算法的“数字指纹”特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少UNIX系统提供了计算MD5 Checksum的命令。(2)数字签名

Hash算法也是现代密码体系的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对Hash值(又称“数字摘要”)进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。(3)鉴权协议

鉴权协议又称挑战-认证模式,在传输信道可被侦听但不可被篡改的情况下,这是一种简单而安全的方法。1.1.2 Windows的Hash密码值

下面我们讨论一下Windows的Hash密码值。

1.Windows系统的Hash密码格式

Windows系统的Hash密码格式如下。用户名称:RID:LM-hash值:NT-hash值

Windows系统的Hash密码示例如下。Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA 724774CE6CC:::● 用户名:Administrator● RID:500● LM-hash值:C8825DB10F2590EAAAD3B435B51404EE● NT-hash值:683020925C5D8569C23AA724774CE6CC

2.Windows下LM-hash值的生成原理

假设明文口令是“Welcome”,首先全部转换成大写,即“WELCOME”,再将该大写字符串转换成二进制串“57454C434F4D4500000000000000”。技巧可以将明文口令复制到UltraEdit编辑器中,使用二进制方式查看即可获取口令的二进制串。

如果明文口令经过大写变换后的二进制字符串不足14字节,则需要在其后添加“0x00”来补足14字节。

将转换后的二进制串切割成2组7字节的数据,分别经str_to_key() 函数处理,得到2组8字节数据。● 57454C434F4D45→56A25288347A348A● 00000000000000→0000000000000000说明str_to_key()函数的C语言描述如下。#include #include #include /* * 读取形如“AABBCCDDEEFF”的16进制数字串,由主调者进行形参的边界检查 */ static void readhexstring ( const unsigned char *src, unsigned char *dst, unsigned int len ) { unsigned int i; unsigned char str[3]; str[2] = '\0'; for ( i = 0; i < len; i++ ) { str[0] = src[ i * 2 ]; str[1] = src[ i * 2 + 1 ]; dst[i] = ( unsigned char )strtoul( str, NULL, 16 ); } return; } /* end of readhexstring */ /* * from The Samba Team's source/libsmb/smbdes.c */ static void str_to_key ( const unsigned char *str, unsigned char *key ) { unsigned int i; key[0] = str[0] >> 1; key[1] = ( ( str[0] & 0x01 ) << 6 ) | ( str[1] >> 2 ); key[2] = ( ( str[1] & 0x03 ) << 5 ) | ( str[2] >> 3 ); key[3] = ( ( str[2] & 0x07 ) << 4 ) | ( str[3] >> 4 ); key[4] = ( ( str[3] & 0x0F ) << 3 ) | ( str[4] >> 5 ); key[5] = ( ( str[4] & 0x1F ) << 2 ) | ( str[5] >> 6 ); key[6] = ( ( str[5] & 0x3F ) << 1 ) | ( str[6] >> 7 ); key[7] = str[6] & 0x7F; for ( i = 0; i < 8; i++ ) { key[i] = ( key[i] << 1 ); } return; } /* end of str_to_key */ int main ( int argc, char * argv[] ) { unsigned int i; unsigned char buf_0[21]; unsigned char buf_1[24]; if ( argc != 2 ) { fprintf( stderr, "Usage: %s \n", argv[0] ); return( EXIT_FAILURE ); } memset( buf_0, 0, sizeof( buf_0 ) ); memset( buf_1, 0, sizeof( buf_1 ) ); i = strlen( argv[1] ) / 2; readhexstring( argv[1], buf_0, i ); for ( i = 0; i < s { fprintf( stderr } fprintf( stderr, " str_to_key( buf_0, str_to_key( buf_0 str_to_key( buf_0 for ( i = 0; i < s { fprintf( stderr } fprintf( stderr, " return( EXIT_SUCCE} /* end of main */

将这2组8字节数据作为DESKey对魔术字符串“KGS!@#$%”进行标准DES加密。● KGS!@#$%→4B47532140232425● 56A25288347A348A→对4B47532140232425进行标准DES加密

→C23413A8A1E7665F● 0000000000000000→4B47532140232425进行标准DES加密→

AAD3B435B51404EE将加密后的两组数据简单拼接,LM-hash为

C23413A8A1E7665FAAD3B435B51404EE。

3.Windows下NTLM-hash值的生成原理

IBM设计的LM-hash算法存在几个弱点,微软在保持向后兼容性的同时提出了自己的挑战响应机制,NTLM-hash应运而生。

假设明文口令是“123456”,首先将其转换成Unicode字符串,与LM-hash算法不同,NTLM-hash不需要添加“0x00”补足14字节。● 123456→310032003300340035003600

从ASCII串转换成Unicode串时使用LITTLE-ENDIAN,微软在设计SMB协议时就没有考虑BIG-ENDIAN,ntoh*()、hton*() 函数不宜用在SMB报文解码中。0x80之前的标准ASCII码转换成Unicode码,就是简单地从“0x??”变成“0x00??”。此类标准ASCII串按LITTLE-ENDIAN转换成Unicode串,就是简单地在原有数据的每个字节之后添加“0x00”。对获取的Unicode串进行标准MD4单向Hash,无论数据源有多少字节,MD4固定产生128位的Hash值。● 310032003300340035003600→进行标准MD4单向Hash→

32ED87BDB5FDC5E9CBA88547376818D4

得到的NTLM-hash为32ED87BDB5FDC5E9CBA88547376818D4。

与LM-hash算法相比,明文口令对大小写敏感,无法根据NTLM-hash判断原始明文口令是否小于8字节,且摆脱了魔术字符串“KGS!@#$%”。MD4是真正的单向Hash函数,穷举作为数据源出现的明文时难度较大。1.1.3 使用GetHashes获取Windows的Hash密码值

GetHashes是InsidePro公司早期的一款Hash密码获取软件,目前的最高版本是1.6。InsidePro公司的网址为http://www.InsidePro.com。此外,该公司还有SAMInside、PasswordsPro、Extreme GPU Bruteforcer这3款密码破解软件。现在,AMInside已经将GetHashes等软件整合在一个软件中了。

1.GetHashes命令格式

一般使用“GetHashes $Local”命令获取系统的Hash密码值,该命令仅在System权限下才能执行成功,示例如下。GetHashes [System key file] Or GetHashes $Local

根据个人爱好,可以将GetHashes软件更名为其他名称,在后面的案例中就将其命名为“getpw”。

2.使用GetHashes获取系统Hash值实例

将“GetHashes”更名为“getpw”,将其复制到欲获取Hash密码值的系统盘中,然后执行“getpw $local”命令,如图1-1所示,顺利获取其Hash密码值。本例中使用的是Radmin的Telnet。依次单击“文本”→“保存为”选项,将结果保存为一个新文件,使用UltraEdit编辑器进行编辑,仅保存Hash密码值部分,然后使用LC5导入Hash密码值即可破解系统的密码。图1-1 获取系统Hash值注意(1)使用GetHashes获取系统的Hash密码值时,必须要在System权限下,也就是在反弹Shell或者Telnet下。(2)如果系统中安装了杀毒软件或者防火墙,有可能由于杀毒软件和防火墙的保护而导致密码获取失败。研究发现,由于GetHashes威力巨大,主要用在入侵过程中获取系统的Hash密码值,因此绝大多数杀毒软件已经将GetHashes加入病毒库。如图1-2所示是Castlecops网站提供的各大杀毒软件针对 GetHashes制作的病毒库版本及更新信息。图1-2 许多杀毒软件已经将GetHashes作为病毒处理(3)InsidePro公司在其网站上还提供了一个Hash产生器,通过输入一些参数值就能够生成经过某种加密算法处理的口令密码值,如图1-3所示,有兴趣的读者可以尝试。该功能在研究系统Hash密码值的生成时可以进行相互验证。图1-3 Hash生成器(4)Hash密码值在线查询。在http://hash.insidepro.com/网站还可以在线查询Hash密码值的原始明文口令,如图1-4所示。将经过MD5加密的Hash值输入后,单击“Search”按钮,如果数据库中存在该值的计算结果,就会在该页面给出。图1-4 在线破解Hash密码值1.1.4 使用GetHashes获取系统Hash值的技巧

使用GetHashes获取系统的Hash值,一般是在获得了系统的部分或者全部控制权限之后,通常是在新的漏洞利用工具发布之后。例如,当系统中存在MS08067漏洞时,可以使用MS08067漏洞利用工具获得存在此漏洞的计算机的一个反弹Shell,然后将GetHashes软件上传到系统中,执行“GetHashes $Local”命令。

下面总结一些GetHashes的使用经验和技巧。

01 在获得反弹Shell的情况下,首先查看系统中是否存在杀毒软件。如果存在,则尝试将其关闭。如果不能关闭,则放弃使用GetHashes获取Hash密码值,转向下一步。

02 查看系统版本,以及系统是否开启了3389远程终端。如果未开启3389终端,判断可否直接开启3389终端。如果可以利用3389终端,则直接添加一个具有管理员权限的用户,然后以该用户的身份登录系统。

03 关闭杀毒软件,再次通过Shell或其他控制软件的Telnet执行“GetHashes $Local”命令来获取Hash密码值,最后删除新添加的用户。1.2 使用gsecdump获取Windows系统密码

gsecdump是Windows环境下获取密码的主要工具,其功能强于GetHashes,目前已经被定义为病毒,常见的病毒名有HackTool.FFC(AVG)、HackTool.Win32.Agent.ym(Kaspersky)、HTool-GSECDump(McAfee)、W32/Hacktool.AY(Norman)、Trojan.Moo(Symantec)、HKTL_AGENT(Trend Micro)。gsecdump的主要特点是在某些情况下能够获取域控密码,是不可多得的密码获取工具软件。1.2.1 下载和使用gsecdump

gsecdump目前的版本为2.0b5,由于其使用的广泛性,因此被Google Chrome及众多杀毒软件定义为病毒,其官方网站已经不提供下载地址,感兴趣的读者可以发送电子邮件至info@truesec.co索取。1.2.2 gsecdump参数

运行gsecdump,如图1-5所示,默认显示帮助信息,也可以使用“gsecdump -h”命令获取帮助信息,其参数含义如下。● -h:显示帮助信息。● -a:获取所有密码信息。● -s:从SAM和域控中获取Hash值。● -l:获取LSA信息,用处不大。● -u:获取活动的登录Hash值,也即当前登录用户的Hash值。● -w:获取无线密码。● -S:强制评估版本为系统版本。图1-5 gsecdump的运行参数信息1.2.3 使用gsecdump获取系统密码

一般使用“gsecdump -a”命令获取所有用户的密码Hash值,如图1-6所示。也可以使用“gsecdump -u”命令获取当前登录用户的Hash值。图1-6 获取系统所有用户的Hash值1.3 使用Quarks PwDump获取域控密码

Quarks PwDump是Quarkslab出品的一款开源用户密码提取工具,目前最新版本为0.2b,其完整源代码可以从https://github.com/quarkslab/quarkspwdump获取,支持Windows XP/2003/Vista/7/2008且相当稳定。Quarks PwDump可以抓取Windows平台上多种类型的用户凭据,包括本地账户、域账户、缓存的域账户和Bitlocker。开发这个工具的目的是同时抓取所有类型的Hash和Bitlocker信息。

该工具源代码下载地址为https://codeload.github.com/quarkslab/quarkspwdump/zip/ master,目前可以导出以下信息。● Local accounts NT/LM hashes + history:本机NT/LM Hash+历史

登录记录。● Domain accounts NT/LM hashes + history:域中的NT/LM Hash

+历史登录记录。● Cached domain password:缓存中的域管理密码。● Bitlocker recovery information (recovery passwords & key

packages):用Bitlocker恢复后遗留的信息。1.3.1 使用Quarks PwDump获取本地账号的Hash值

Quarks PwDump必须在DOS命令提示符下运行。运行QuarksPwDumpv0.2b.exe,如图1-7所示,默认显示帮助信息,其参数含义如下。图1-7 使用Quarks PwDump获取本地账号的Hash值● -dhl:导出本地Hash值。● -dhdc:导出内存中的域控Hash值。● -dhd:导出域控Hash值(必须指定NTDS文件)。● -db:导出Bitlocker信息(必须指定NTDS文件)。● -nt:导出NTDS文件。● -hist:导出历史信息,可选项。● -t:导出类型,可选项,默认导出John类型。● -o:导出文件到本地。1.3.2 使用Quarks PwDump导出账号实例

执行命令“QuarksPwDumpv0.2b.exe -dhl -o 1.txt”,将导出本地Hash值到当前目录下的1.txt文件。执行该命令会显示导出账号的数量,如图1-8所示,有3个账号的信息被导出,打开1.txt文件可以看到导出Hash值的具体账号和值。图1-8 导出本地账号信息1.3.3 配合使用NTDSutil导出域控密码

NTDSutil是一个为Active Directory提供管理设施的命令行工具。可以使用NTDSutil执行Active Directory的数据库维护工作,管理和控制单个主机的操作,创建应用程序目录分区,以及删除因未使用Active Directory安装向导(DCPromo.exe)而成功降级的域控制器留下的元数据。NTDSutil还可以用来获取域控数据库文件ntds.dit,具体命令如下。● 创建快照。ntdsutil snapshot "activate instance ntds" create quit quit ● NTDSutil加载活动目录的快照。{GUID}是动态获取的,如图1-9

所示。ntdsutil snapshot "mount {GUID}" quit quit 图1-9 导出快照文件● 复制快照至本地磁盘。copy MOUNT_POINT\windows\NTDS\ntds.dit c:\ntds.dit ● 卸载快照。ntdsutil snapshot "unmount {GUID}" quit quit ● 删除快照。ntdsutil snapshot "delete {GUID}" quit quit

使用命令“QuarksPwDump.exe --dump-hash-domain --ntds-file c:\ntds.dit”,将导出的ntds.dit文件中的Hash值全部导出,示例如下。tdsutil snapshot "activate instance ntds" create quit quit ntdsutil snapshot "mount {a0455f6c-40c3-4b56-80a0-80261471522c}" quit quit 快照 {5e0d92d3-992d-42b9-bbd5-9c85e5dc7827} 已挂接为 C:\$SNAP_201212082315_ VOLUM EC$\ copy C:\$SNAP_201212082315_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit ntdsutil snapshot "unmount {5e0d92d3-992d-42b9-bbd5-9c85e5dc7827}" quit quit ntdsutil snapshot "delete {5e0d92d3-992d-42b9-bbd5-9c85e5dc7827}" quit quit QuarksPwDump.exe --dump-hash-domain --ntds-file c:\ntds.dit 说明获取Hash值最好在同一台服务器上执行,也就是说,将QuarksPwDump.exe直接放在导出ntds.dit文件的服务器上执行导出命令。如果仅将ntds.dit复制后下载到本地,可能会出现无法读取的错误。网上出现过一个ntds.dit密码快速提取工具NTDSDump,读者可以自己进行测试。如果想下载ntds.dit到本地进行恢复,还需要执行“reg save hklm\system system.hive”命令,将system.hive和ntds.dit全部复制到本地进行域控密码的获取。1.4 使用PwDump获取系统账号和密码

在网络攻击中,通过一些溢出程序成功溢出被攻击的计算机后,最重要的一个步骤就是获取该计算机中的用户账号和密码。特别是在成功控制服务器以后,获取系统中的账号和密码更是入侵者的必由之路。

通过使用计算机中用户原本的账号和密码登录3389终端,优于在系统中增加或者克隆账号。在系统中增加或者克隆账号容易被发现,进而导致被控计算机丢失。获取系统账号和密码的方法很多,本节使用比较流行的PwDump和LSASecretsView两款软件来获取系统中的账号和密码。1.4.1 上传文件到欲获取密码的计算机

PwDump 4.02中有两个文件,一个是Pwd4.dll,另一个是Pwdump4.exe。在早期版本中,其DLL文件为lsaext.dll。

将这两个文件上传到欲获取账号和密码的计算机的系统目录下。1.4.2 在Shell中执行获取密码的命令

本案例通过Radmin的Telnet来执行命令。

在系统根目录中执行“pwd4 /l /o:*.*.*.82.sam”命令,将系统中的账号和口令信息导出到“*.*.*.82.sam”文件中。导出成功后,会给出一些提示信息,如操作系统版本及用户数量等,如图1-10所示。然后,将其SAM文件传回本地计算机。图1-10 执行获取密码的命令说明(1)在本例中,直接将Pwdump4.exe的名称更改为“pwd4.exe”,是为了在操作中减少输入的内容。(2)“pwd4”后面的参数“/l”表示导出到本地,“/o:filename”表示输出到filename文件。1.4.3 通过LC5导入SAM文件

通过PwDump4获取的是系统账号的Hash值,需要通过一些工具软件进行破解,从而获取其账号所对应的密码。

运行LC5,新建一个Session,然后在“Session”菜单或者图标中选择“Import”选项,在“Import”窗口的“Import from file”区域选中“From PWDUMP file”单选项,然后选择刚才导出的SAM文件,如图1-11所示。图1-11 将SAM文件导入LC51.4.4 破解系统账号和密码

成功导入SAM文件后,会在LC5中显示“Domain”、“User Name”、“LM Password”、“Password”等信息,如图1-12所示。在该界面中,如果“LM Password”和“Password”列显示为“empty”,表示该账号为空或者使用PWDump未能导出其Hash值。在“User Name”列中,如果用户名以“IUSR_”、“IWAM_”开头,以及用户名为TsInternetUser、SQLDebugger的账号,均为系统账号,表示其密码是随机生成的,可以将其删除。图1-12 需要破解的系统账号1.4.5 破解结果

删除一些系统中无用的账号,单击“Session”菜单中的“Begin Audit”命令,或者单击工具栏上的绿色三角形按钮,开始破解密码。LC5破解成功后,会显密码信息,如图1-13所示。图1-13 破解账号成功说明由于杀毒软件或者防火墙等系统的安全防御,使用PwDump 4.02及以前版本有可能无法正常导出系统账号及其Hash值。有时在执行命令后会出现长时间的无反应现象,如图1-14所示,这种现象表明无法通过Pw Dump导出系统账号和密码。图1-14 导出系统账号和密码失败对于导出系统账号和密码失败的情况,有两种处理方式:一种是使用其他软件;另一种是停用系统中的安全防护软件,再次使用PwDump导出系统账号和密码。在本案例中推荐使用LSASecretsView获取系统默认的密码。将LSASecretsView软件上传到欲获取账号和口令的计算机中,通过Radmin客户端或者其他方式,在桌面直接运行LSASecretsView,其显示结果中的“DefaultPassword”即为系统默认的管理员账号密码。在本例中,密码为“48610”,如图1-15所示。通过LSASecretsView获取的密码是系统未更改的默认密码,对更改后的系统密码无能为力。图1-15 通过LSASecretsView获取系统密码注意使用LSASecretsView获取系统的密码需要在GUI模式下进行。不过,LSASecretsView可以直接读出系统的默认密码,因此,使用该软件获取肉机的密码时操作一定要迅速,获取密码后立即删除该软件并退出桌面,以免被用户或者管理员发现。1.5 使用SAMInside获取及破解Windows系统密码

在通过SQL注入等方式获取网站的WebShell后,就要利用系统的各种漏洞进行提权,提权成功后通过远程终端进入系统。此时,为了长期控制或者进一步渗透网络,就需要获取系统正常用户的密码。

获取系统密码Hash值的软件很多,本节主要介绍如何使用SAMInside获取系统的Hash值,以及如何结合彩虹表快速破解系统用户的密码。1.5.1 下载和使用SAMInside

SAMInside的官方下载地址为http://www.insidepro.com/download/saminside.zip。目前的最新版本为SAMInside 2.7.0.2,该版本中不再提供GetHashes工具(官方提供的是试用版,有些高级功能不能使用),但并不影响获取系统密码Hash值。SAMInside可以获取Windows 2008 Server及以下版本操作系统的用户密码Hash值。在获取这些Hash值后,可以通过彩虹表或者字典等进行破解,进而获取系统的密码。SAMInside不需要安装,将下载的文件解压缩到本地磁盘即可使用。1.5.2 使用Scheduler导入本地用户的Hash值

直接运行SAMInside,如图1-16所示,单击第3个图标,然后选择“Import Local Users via Scheduler”选项,将本地用户的Hash值导出。虽然SAMInside还提供了从LSASS导出本地用户的机制,但该方法在一些操作系统中容易出错。图1-16 使用Scheduler导入本地用户的Hash值1.5.3 查看导入的Hash值

使用SAMInside导入本地用户的Hash值,必须具有管理员权限。在有些情况下,管理员会对磁盘进行权限限制,这个时候需要为SAMInside授权才能获取系统用户的Hash值。

如图1-17所示,一共获取了4个用户的Hash值,并显示了每个值的User、RID、LM-password、NT-password、LM-hash、NT-hash、Description信息。如果LM-password和NT-password显示为“Disabled”,表示该账户处于禁用状态。对超过14位的密码,在LM-password中会以全0显示。在旧版本的SAMInside中,以“AA3D”开头显示的密码也表示其位数超过14位,如“simeon:1005:AAD3B435B51404EEAAD3B435B51404EE: 5E9C2FAAE669F5D06F33014E33AC2CFC:::”的密码就超过了14位。图1-17 查看导入的Hash值1.5.4 导出系统用户的Hash值

依次单击“File”→“Export Users to PWDUMP File”选项,将获取系统用户的密码Hash值导出为一个文件,其导出文件的内容如图1-18所示。然后,将该文件导入Ophcrack中进行破解。图1-18 导出系统用户的Hash值

SAMInside本身也能破解系统Hash值,不过破解速度和效果不如Ophcrack。对一些简单的密码,SAMInside会直接显示,感兴趣的朋友可以尝试。1.5.5 设置SAMInside的破解方式

如图1-19所示,默认选择“LM-hashes attack”选项进行破解。如果用户密码超过14位,或者LM-hash中显示的全是0,则可以选择“NT-hashes attack”选项进行破解。然后,需要设置字典破解、暴力破解、掩码破解及彩虹表破解等。

如果采用字典破解,则需要选择“Options…”选项,在“Dictionary attack”中设置字典。将本地字典文件添加到字典文件列表中,如图1-20所示。可以设置多个字典文件用于破解。SAMInside的帮助系统提供了在线字典下载功能,大概有2GB的字典可供下载。图1-19 设置SAMInside的破解方式图1-20 导入字典文件进行破解1.5.6 执行破解

设置破解的有关选项后,单击绿色三角形图标进行破解,如图1-21所示。如果密码在字典文件中,则很快就会给出结果。图1-21 运行字典破解本地用户密码1.6 Windows Server 2003域控服务器用户账号和密码的获取

域控制器相当于一个门卫,其中包含由这个域的账户密码、管理策略等信息构成的数据库。当一台计算机登录域时,域控制器要鉴别这台计算机是否属于这个域,以及用户使用的登录账号和密码是否正确。如果正确,则允许计算机登录这个域,使用该域内其有权限访问的资源,如文件服务器、打印服务器(也就是说,域控制器仅起到验证作用,访问其他资源并不需要再跟域控制器扯上关系);如果不正确,则不允许计算机登录,这时计算机将无法访问域内的资源,这在一定程度上保护了企业网络资源。

域服务器的作用如下。● 安全集中管理,统一安全策略。● 软件集中管理,按照公司要求限定所有机器只能运行必需的办公

软件。● 环境集中管理,利用AD可以统一客户端桌面、浏览器、TCP/IP

等设置。● 活动目录是企业基础架构的根本,是公司整体统一管理的基础。

ISA、Exchange、防病毒服务器、补丁分发服务器、文件服务器

等服务依赖于域服务器。

域控服务器是网络安全渗透的重点对象。获取了域控服务器的权限,就意味着掌控了整个网络的资源和权限,在渗透过程中获取域控服务器用户账号和密码是基础和必需的一步。本节将对域控渗透思路、内网渗透常见命令及域控用户账号和密码的获取进行探讨。1.6.1 域控服务器渗透思路

域控服务器的渗透思路,仁者见仁,智者见智,笔者将实际工作经验总结如下。● 寻找网络入口,获取域控用户权限,通过用户获取域控管理员信

息。针对域控管理员开展个人主机渗透或者社会工程学攻击,获

取域管理员个人主机权限,进而获取域控服务器权限。● 获取域控服务器内某台Web服务器或者其他服务器的权限。在获

取一台服务器的权限后,通过获取该服务器的用户账号和密码,

对整个内网使用NTScan等工具进行账号的暴力破解,从而获取

域控服务器权限。

总之,在内网渗透中需要对各种信息进行收集和研判,通过信息进行大胆的推断和渗透测试,不断扩大权限,最终获取域控服务器的权限。1.6.2 内网域控服务器渗透的常见命令

下面介绍内网域控服务器渗透的常见命令。

1.本机信息收集● 用户列表(Windows用户列表、邮件用户等):分析Windows用

户列表,不要忽略administrator;分析邮件用户、内网/域邮件用

户,通常就是内网/域用户,如owa。● 进程列表:分析杀毒软件/安全监控工具、邮件客户端、VPN

等。● 服务列表:与安全防范工具有关的服务(判断是否可以手动控制

等),以及存在问题的服务(权限/漏洞)。● 端口列表:开放端口对应的常见服务/应用程序(匿名、权限、

漏洞等),以及利用端口进行信息收集,建议读者深入挖掘(NETBIOS、SMB等)。● 补丁列表:分析Windows补丁和第三方软件(Java、Oracle、

Flash等)的漏洞。● 本机共享(域内共享很多时候与此相同):本机共享列表/访问权

限,以及本机访问的域共享/访问权限。● 本地用户习惯分析:历史记录、收藏夹、文档等,特别是远程终

端、PuTTY、FTP、SSH等。有些用户喜欢在本地保存登录密码,

通过客户端可以直接登录。

2.常见的信息收集命令● 查询本机用户列表:net user● 查询本机管理员(通常含有域用户):net localhroup

administrators● 查询域管理员用户:net group "domain admins" /domain● 查询域用户:net user /domain● 查询域里面的工作组:net group /domain● 查询域名称:net view /domain● 查询域内计算机:net view /domain:XX● 查询域控制器:net time /domain● 查询域管理员用户组:net localgroup administrators /domain● 域用户添加到本机:net localgroup administrators workgroup

\user001 /add● 查看域控制器(如果有多台):net group "Domain controllers"● 查询本机IP段、所在域等:ipconfig /all● 查询同一域内机器列表:net view● 查询所有域控制器:dsquery serverdsquery server -domain super.com | dsget server -dnsname -site //搜索域内所有域控制器并显示其DNS主机名和站点名 ● 查询域内计算机:dsquery computerdsquery computer domainroot -name admin* -limit 10 //搜索域内名称以“admin”开头的前10台机器 ● 查询域用户:dsquery userdsquery user domainroot -name admin* -limit 10 //搜索域内名称以“admin”开头的前10个用户 ● 查询域内联系人:dsquery contactdsquery contact domainroot -name admin* -limit 10 //搜索域内名称以“admin”开头的前10个联系人 ● 查询域内子网:dsquery subnet● 查询域内用户组:dsquery groupdsquery group dc=super,dc=com |more //搜索在DC=SUPER、DC=COM域中的所有组 ● 查询域内组织单位:dsquery ou● 查询域内站点:dsquery sitedsquery site -o rdn //搜索域中所有站点的名称 ● 查询域内所有计算机:net group "domain computers" /domain注意-limit参数不指定查询数量,则默认显示前100条结果。● 查询超过4周未登录的计算机:dsquery computer -inactive 4● 查询超过4周未登录的用户:dsquery user -inactive 4● 通过组织单位查询计算机:dsquery computer

"ou=xx,dc=xx,dc=com"

求助待解决问题:dsquery user domainroot -name admin* -limit 10 //搜索域内名称以“admin”开头的前10个用户

查询这10个用户的后10个用户要如何写?● 列出本机所有驱动器:fsutil.exe fsinfo drives● 显示当前路由表中的所有项目:route print● 显示IP路由表中以“10”开头的路由条目:route print 10.*● 备份导出服务器网络配置:netsh dump>d:\netbak.txt● 查看邮件服务器记录:nslookup -qt=mx google.com● 查看子域名服务器记录:nslookup -qt=ns google.com● 列出所有记录:>ls -d domain d:\xxx.txt1.6.3 域控服务器用户账号和密码获取实例

01 获取IP配置信息

打开命令提示符窗口,如图1-22所示,输入命令“ipconfig /all”,查看该服务器的IP地址等信息,并通过该信息探测是否存在域控服务器。如果存在内部域控,在DNS服务器中一定会有内部IP地址,如10.168.10.1。图1-22 获取网络配置情况

02 查看域控情况

通过“net view”命令查看显示当前域的计算机列表,在本例中发现仅存在1台服务器,如图1-23所示。

运行“net view”命令可以显示域列表、计算机列表或指定计算机的共享资源列表。“net view [\\ComputerName] [/domain[:DomainName]]”命令用于指定要查看其可用计算机的域。如果省略DomainName,使用/domain将显示网络上的所有域。在本例中,输入命令“net view /domain”,可知该网络中存在2个域,分别是ITEDT47和WORKGROUP,如图1-24所示。图1-23 显示当前域的计算机列表图1-24 获取当前域控名称

03 登录域控服务器

使用NTScan扫描网段10.168.10.1-254中已经获取的Web服务器管理员密码和用户密码,获取IP地址为10.168.10.3的域控服务器的用户名和密码。通过远程终端登录该服务器,如图1-25所示。

04 获取域控服务器的用户密码

将PsExec、gsecdump等工具上传到域控服务器。执行“psexec \\127.0.0.1 cmd”命令获取system权限,然后到工具目录下执行“gsecdump -s >all.txt”命令,将用户密码Hash值全部导出到all.txt文件,如图1-26所示,代码如下。图1-25 获取域控服务器权限图1-26 获取域控服务器的用户密码usage: gsecdump [options] options: -a [ --dump_all ] dump all secrets -s [ --dump_hashes ] dump hashes from SAM/AD -l [ --dump_lsa ] dump lsa secrets -u [ --dump_usedhashes ] dump hashes from active logon sessions -w [ --dump_wireless ] dump microsoft wireless connections -h [ --help ] show help -S [ --system ] run as localsystem

05 查看并整理域控用户密码

通过“记事本”等程序打开all.txt,将IUSR、IWAM及用户名末尾含有“$”符号的用户全部删除。例如,“IUSR_FS02T47E(current)”、“IWAM_FS02T47E(current)”、“RM103-2$(current)”都是无用的密码,如图1-27所示。图1-27 查看并整理域控用户密码

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载