-
渗透技巧——从Admin权限切换到System权限
0x00 前言 在渗透测试中,某些情况下需要用到system权限,例如操作注册表HKEY_LOCAL_MACHINE\SAM\SAM 恰巧最近看到了一篇文章介绍了几种获得system权限的方法,于是决定结合自己的经验对这方面的技巧做系统整理 当然,前提是已经获得系统的管理员权限 学习链接: https://blog.xpnsec.com/becoming-system/ 0x01 简介 本文将要介绍以下内容: 通过创建服务获得System权限的方法 利用MSIExec获得System权限的方法 利用token复制获得System权限的方法 利用Capcom.sys获得System权限的方法 0x02 通过创建服务获得System权限 1、通过sc命令实现 sc Create TestService1 binPath= "cmd /c start" type= own type= interact sc start TestService1 该方法在XP系统可以使用 Win7下使用时控制台提示: 警告: 服务 TestService1 被配置为交互式服务,其支持正受到抨击。该服务可能无法正常起作用。 服务启动时弹框,需要点击查看消息才能执行代码,如下图 Win8下控制台提示错误,无法使用该方法 2、通过计划任务 使用at命令: at 7:50 notepad.exe 默认以system权限启动,适用于Win7 从Win8开始不再支持at命令 使用schtasks命令: 创建服务,以system权限启动: schtasks /Create...
-
CIA Vault7 RDB中的Windows后门利用方法分析
0x00 前言 在上篇文章《CIA Hive测试指南——源代码获取与简要分析》对维基解密公布的代号为Vault 8的文档进行了研究,简要分析服务器远程控制工具Hive 本文将要继续对维基解密公布的CIA相关资料进行分析,介绍Vault 7中Remote Development Branch (RDB)中提到的Windows后门利用方法 资料地址: https://wikileaks.org/ciav7p1/cms/page_2621760.html 0x01 简介 本文将要分析以下后门利用方法: VBR Persistence Image File Execution Options OCI.DLL Service Persistence Shell Extension Persistence Windows FAX DLL Injection 0x02 VBR Persistence 用于在Windows系统的启动过程中执行后门,能够hook内核代码 VBR全称Volume Boot Record (also known as the Partition Boot Record) 对应工具为Stolen Goods 2.0(未公开) Stolen Goods的说明文档地址:...
-
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...