Good in study, attitude and health

  • CIA Hive测试指南——源代码获取与简要分析

    0x00 前言 11月9日维基解密公布一个代号为Vault8的文档,包含服务器远程控制工具Hive的源代码和开发文档。本文仅站在技术角度,介绍测试方法,简要分析工具特点。 维基解密地址: https://wikileaks.org/vault8/ 0x01 简介 本文将要介绍以下内容: 源代码获取方法 框架流程分析 工具具体说明 特点分析 0x02 源代码获取 下载地址: https://wikileaks.org/vault8/document/repo_hive/ 代码库中的文件创建于在2013年8月和2015年10月之间,但工具Hive的开发时间应该更早 维基解密以git的方式公布该代码,包含以下几个分支: armv5 autotools debug dhm makemods master(默认) mt6 polar-0.14.3 polar-1.1.8 polar-1.2.11 polar-1.3.4 solarisbug ubiquiti 下载后发现并不包含相关源代码,需要使用git释放源代码 注: 这种方式能够减小源代码体积(下载文件大小95.5MB,实际文件大小170MB) 1、安装git kali2默认安装,未安装的Linux系统使用以下安装命令: sudo yum install git Windows系统下载地址: https://git-for-windows.github.io/ 使用如下图 2、常用git命令 查看所有分支,当前分支会被星号标示出: git branch 当前分支为master,如下图 查看历史版本: git...

  • 渗透技巧——Windows系统的帐户隐藏

    0x00 前言 在之前的文章《渗透技巧——Windows系统远程桌面的多用户登录》介绍过Windows系统远程桌面的利用技巧,实现了非服务器版本Windows系统的多用户远程登录,而最近我和Evilcg一起研究了通过帐户克隆实现隐藏帐户的利用技巧。如果将二者结合,会有什么利用技巧呢,本文将会一一介绍。 0x01 简介 本文将要介绍以下内容: 帐户隐藏的方法 编写脚本实现思路 结合远程桌面多用户登录的利用思路 0x02 帐户隐藏的方法 该方法在网上已有相关资料,本节只做简单复现 测试系统:·Win7x86 1、对注册表赋予权限 默认注册表HKEY_LOCAL_MACHINE\SAM\SAM\只有system权限才能修改 现在需要为其添加管理员权限 右键-权限-选中Administrators,允许完全控制 如下图 重新启动注册表regedit.exe,获得对该键值的修改权限 2、新建特殊帐户 net user test$ 123456 /add net localgroup administrators test$ /add 注: 用户名要以$结尾 添加后,该帐户可在一定条件下隐藏,输入net user无法获取,如下图 但是,在控制面板能够发现该帐户 如下图 3、导出注册表 在注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names下找到新建的帐户test$ 获取默认类型为0x3ea 将注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\test$导出为1.reg 在注册表下能够找到对应类型名称的注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA 如下图 右键将该键导出为2.reg,保存的文件信息如下图 默认情况下,管理员帐户Administrator对应的注册表键值为HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4 同样,右键将该键导出为3.reg 将注册表项HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA下键F的值替换为HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4下键F的值,即2.reg中键F的值替换成3.reg中键F的值 替换后,如下图 4、命令行删除特殊帐户 net user...

  • 渗透技巧——Windows系统远程桌面的多用户登录

    0x00 前言 在渗透测试中,经常会接触Windows服务器的远程桌面服务,通过界面对服务器进行管理。而对于普通的Windows系统,在某些条件下也需要进行界面操作。 虽然我们可以通过编写程序来实现界面操作(捕获桌面信息,压缩传输,发送鼠标键盘消息等),但是如果能够使用远程桌面服务,岂不是更加方便高效 那么,对应非服务器版本的Windows系统,在使用远程桌面服务有哪些需要注意的问题呢,本文将会逐个分析介绍。 0x01 简介 本文将要介绍如下内容: 开启远程桌面的方法 使用mimikatz支持远程桌面多用户的原理 改进思路 测试工具rdpwrap 0x02 开启远程桌面的方法 1、查询系统是否允许3389远程连接 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections 1表示关闭,0表示开启 查看远程连接的端口: REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber 端口格式为16进制,如下图 0xd3d转换为十进制为33389 2、本机开启3389远程连接的方法 方法1:通过cmd REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber...

  • Linux下的密码Hash——加密方式与破解方法的技术整理

    0x00 前言 Linux系统下,用户的密码会被加密保存在文件/etc/shadow中,关于密码的加密方式与破解方法有哪些呢?本文尝试对这一部分内容进行整理,介绍相关基础知识,测试常用方法,帮助大家对此有更直观的认识。 0x01 简介 本文将要介绍以下内容: Linux下用户密码的保存格式 Linux下用户密码的加密方法 破解用户密码hash的常用工具和方法 0x02 Linux下用户密码的保存格式 Linux密码信息保存在两个文件中,分别为:/etc/passwd和/etc/shadow /etc/passwd: 普通用户权限能够查看 保存用户信息,每一行代表一个用户,每一行通过冒号:分为七个部分 用户名 密码,x表示密码保存在/etc/shadow UID,0代表root GID,表示所在组 描述信息,依次为Full Name、Room Number、Work Phone、Home Phone和Other 用户主目录 默认shell类型 eg. test2:x:1001:1001:test2,11111,111111-11,222222-22,test:/home/test2:/bin/bash 用户名:test2 密码保存在/etc/shadow UID为1001 GID为1001 描述信息: Full Name []: test2 Room Number []: 11111 Work Phone []: 111111-11 Home Phone []: 222222-22 Other...

  • 利用BDF向DLL文件植入后门

    0x00 前言 在之前的文章《利用BDF向EXE文件植入后门》介绍了使用The Backdoor Factory向EXE文件植入后门的方法,这次将要介绍向DLL文件植入后门的思路,演示一种DLL劫持的利用方法,总结该方法的特点,分析防御思路 0x01 简介 本文将要介绍以下内容: 劫持自己的DLL,修复BUG 劫持系统的DLL,绕过Autoruns的后门检测 0x02 利用思路 DLL同EXE文件的植入思路相同,也是通过修改程序的执行流程,跳转到Code Caves,执行payload,再返回至程序的正常流程 DLL同EXE文件最大的区别是多了导出函数的功能 在实现DLL劫持时,常常需要获得原DLL的导出函数,模拟导出函数,添加payload,实现利用 那么,The Backdoor Factory在DLL文件的后门植入上,是否要考虑导出函数呢? 下面进行测试,得出结论 0x03 编写程序进行测试 测试Dll testdll.dll: #include <windows.h> #include <stdio.h> BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: //MessageBox(NULL, NULL, NULL, 0); //Sleep(5000); printf("[+]...

  • 利用BDF向EXE文件植入后门

    0x00 前言 The Backdoor Factory可用来向可执行文件植入后门,修改程序执行流程,执行添加的payload。 本文将要介绍向EXE文件植入后门的原理,测试The Backdoor Factory植入后门的方法,分析细节,总结思路。 The Backdoor Factory下载地址: https://github.com/secretsquirrel/the-backdoor-factory 0x01 简介 本文将要介绍如下内容: EXE文件后门植入原理 实际测试The Backdoor Factory 分析The Backdoor Factory功能 0x02 基础知识 PE文件格式: 参考资料: https://en.wikibooks.org/wiki/X86_Disassembly/Windows_Executable_Files Code Caves: 参考资料: https://www.codeproject.com/Articles/20240/The-Beginners-Guide-to-Codecaves Code Caves的直观认识: 使用vc6.0生成exe文件,查看文件中可利用的Code Caves c代码: #include "stdafx.h" #include <windows.h> #include <stdio.h> int array[200]={1,2,3,4,5,6,7,8,9}; char array2[200]="123456789ABCDEF"; int main(int argc, char*...

  • Catalog签名伪造——Long UNC文件名欺骗

    0x00 前言 在之前的两篇文章《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》和《Authenticode签名伪造——针对文件类型的签名伪造》介绍了Authenticode签名伪造的利用方法,这次将要介绍一个Catalog签名伪造的方法,利用Long UNC文件名欺骗系统,获得系统内置的Catalog签名 注: 本文介绍的技巧参考自Matt Graeber@mattifestation公开的资料,本文将结合自己的经验,整理相关内容,添加个人理解。 参考资料: http://www.exploit-monday.com/2013/02/WindowsFileConfusion.html?m=1 0x01 简介 本文将要介绍以下内容: Long UNC基础知识 Long UNC文件名欺骗的方法 Long UNC文件名欺骗优缺点分析 0x02 Long UNC介绍 UNC(Universal Naming Convention) 通用命名规则,可用来表示Windows系统中文件的位置 详细介绍可参考如下链接: https://en.wikipedia.org/wiki/Path_(computing) Long UNC 正常UNC支持的最大长度为260字符 为了支持更长的字符,引入了Long UNC,支持最大长度为32767 格式举例: \\?\C:\test\a.exe type putty.exe > "\\?\C:\test\longUNC.exe" 如下图,使用Long UNC的文件同普通文件没有区别 特别用法: 如果在Long UNC文件名后面加一个空格,系统对文件名的判断将发生错误 type putty.exe > "\\?\C:\test\mimikatz.exe " 如下图 将putty.exe重命名为"\\?\C:\test\mimikatz.exe...

  • Authenticode签名伪造——针对文件类型的签名伪造

    0x00 前言 在上篇文章《Authenticode签名伪造——PE文件的签名伪造与签名验证劫持》介绍了针对单一文件的Authenticode签名伪造,需要在文件尾部添加伪造的签名数据,这次将介绍另一种签名伪造方式:通过修改系统的签名获取机制,欺骗系统将正常文件识别为包含签名数据。 注: 本文介绍的技巧参考自Matt Graeber@mattifestation公开的资料,本文将结合自己的经验,整理相关内容,添加个人理解。 参考资料: https://specterops.io/assets/resources/SpecterOps_Subverting_Trust_in_Windows.pdf http://www.exploit-monday.com/2017/08/application-of-authenticode-signatures.html https://drive.google.com/file/d/0B-K55rLoulAfNms1aW1rbXF1Tmc/view 0x01 简介 本文将要介绍以下内容: 针对powershell脚本的签名伪造方法 针对PE文件的签名伪造方法 针对其他类型文件的签名伪造方法 添加代码实现对特定文件的签名伪造 0x02 针对powershell脚本的签名伪造方法 前提是powershell脚本需要包含一个签名(自己生成的签名会被识别为无效),下面介绍如何将该无效签名伪造成有效的微软签名 生成测试证书: makecert -n "CN=Microsoft Windows Test1" -r -eku 1.3.6.1.5.5.7.3.3 -sv certtest.pvk certtest.cer cert2spc certtest.cer certtest.spc pvk2pfx -pvk certtest.pvk -pi 123456 -spc certtest.spc -pfx certtest.pfx -f 不需要注册该证书 注: 使用makecert.exe要加参数: -eku 1.3.6.1.5.5.7.3.3...

  • Authenticode签名伪造——PE文件的签名伪造与签名验证劫持

    0x00 前言 在上一篇文章《CAT文件数字签名使用技巧》介绍了证书签名的基础知识,Windows系统下向文件签名有两种方法:添加在文件末尾(Authenticode)和CAT文件(catalog),本文将介绍Authenticode签名的相关利用技巧——PE文件的签名伪造与签名验证劫持 注: 本文介绍的技巧参考自Matt Graeber@mattifestation公开的资料,本文将结合自己的经验,整理相关内容,添加个人理解。 参考资料: https://specterops.io/assets/resources/SpecterOps_Subverting_Trust_in_Windows.pdf http://www.exploit-monday.com/2017/08/application-of-authenticode-signatures.html https://drive.google.com/file/d/0B-K55rLoulAfNms1aW1rbXF1Tmc/view 0x01 简介 本文将要介绍以下内容: PE文件的Authenticode签名伪造 劫持签名验证过程,实现代码执行,作为后门 0x02 PE文件的签名伪造 Authenticode的详细说明文档可参考: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx 部分系统文件会包含微软的签名,例如C:\Windows\System32\consent.exe 通过文件属性能够看到相关签名信息,如下图 通过powershell验证,代码如下: Get-AuthenticodeSignature C:\Windows\System32\consent.exe 如下图 借助工具CFF Explorer获取文件结构,如下图 Security Directory RVA代码数字签名在PE文件中的偏移位置 Security DirectorySize代表数字签名的长度 将这部分内容提取,复制到另一个文件test.exe的尾部,同时使用CFF Explorer修改test.exe对应的Security Directory RVA和Security DirectorySize 这样,就实现了数字签名的伪造 开源工具SigThief可自动实现以上过程,地址如下: https://github.com/secretsquirrel/SigThief 实际测试: 测试系统: Win7 将C:\Windows\System32\consent.exe的数字签名复制到mimikatz.exe中 参数如下: sigthief.py -i C:\Windows\System32\consent.exe -t mimikatz.exe...

  • CAT文件数字签名使用技巧

    0x00 前言 Windows系统中的重要文件常常会被添加数字签名,用来防止被篡改,部分白名单规则的判定也会基于数字签名。 本文作为数字签名研究系列文章的基础内容,介绍两种数字签名的添加方法,分析CAT文件数字签名的特点,并且纠正一名读者对我文章的回复,地址如下: 《利用xwizard.exe加载dll》 基于我的测试,个人认为:移动位置后,CAT文件数字签名不会失效 0x01 简介 本文将要介绍以下内容: 生成证书的方法 将数字签名添加在文件末尾的方法(Authenticode) 将数字签名保存在CAT文件中的方法(catalog) 使用CAT数字签名的文件特点 0x02 将数字签名添加在文件末尾的方法(Authenticode) 曾在隐写技巧的系列文章中研究过在数字签名中隐藏payload的方法,地址如下: 《隐写技巧——在PE文件的数字证书中隐藏Payload》 文中介绍过证书格式,在此不再赘述 向文件尾部添加数字签名后,可通过文件属性查看 实例: C:\Windows\System32\consent.exe 自带微软数字签名,如下图 可通过powershell验证数字签名: Get-AuthenticodeSignature .\mimikatz.exe 也可以使用工具通过命令行查看数字签名 使用signtool.exe查看: signtool.exe verify /v C:\Windows\System32\consent.exe 如下图 使用sigcheck.exe查看: sigcheck.exe -q C:\Windows\System32\consent.exe /accepteula 如下图 注: signtool.exe: 可用于查看文件的数字签名 安装Visual Studio后包含SDK,其中可找到signtool.exe,位于C:\Program Files\Microsoft SDKs\Windows\ 进入开发人员工具的cmd可直接调用signtool.exe Windows 7 SDK下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=8279...