作者:@singe (Dominic White @ SensePost)
BIRP 是一款能协助对通过 TN3270 服务的大型机应用进行安全评估的工具。正如 BURP 及其他 Web 应用代理为 Web 应用评估所做的那样,BIRP 旨在为 TN3270 应用评估提供类似功能。同时,与 Web 应用类似,能够查看和修改那些应用开发者以为不可见或不可修改的字段,使得安全假设得以被绕过。
具体而言,BIRP 为有志于 TN3270 安全研究的人员提供两种能力。第一,它能显示应用返回在屏幕上的所有数据,包括隐藏字段。第二,它允许修改那些标记为“受保护”(即“不可修改”)的字段。根据应用开发方式的不同,这可以改变应用的功能行为。
运行 ./birp.py -h 可获取启动帮助。
你只需使用 -t 参数指定目标即可。目标说明可以在 IP 后加上冒号和端口,例如 10.10.10.10:1023。如果未指定端口,则默认使用 :23(与 x3270 默认行为一致)。
可以使用 -l 加载之前保存的历史文件。你始终需要指定目标,目前还无法仅查看历史文件而不指定目标。
请查看下方的先决条件以了解安装信息。遗憾的是,目前该工具仅能在 Unix 环境下运行,不支持 Windows。
当前,BIRP 的功能相对有限,具体包括:
交互模式是 BIRP 功能的核心。它会将按键和其他命令从 BIRP 传递到 x3270,让分析人员能够像直接使用 x3270 一样与应用进行交互。但它还会显示每个返回屏幕的标记后“黑客视图”,并记录“事务”保存到代理历史中,供后续分析和检查。
在交互模式下,按 Ctrl-h 可打印帮助屏幕,Ctrl-k 可显示颜色键,ESC 可返回菜单。
BIRP 会尝试判断何时发生了一次“事务”,并记录事务前后的屏幕以及被修改的字段。某些按键通常能确保触发事务,例如 Enter 键或任何 PF/PA 键。但如果屏幕因某种原因需要使用不同的键才能正常工作,你可以在执行操作后立即按 Ctrl-u 手动“推送”一次事务。
最后,如果你想重新打印屏幕,请按 Ctrl-r。
该功能将显示 BIRP 记录的所有事务历史,并允许检查它们。具体来说,它可以查看提交的屏幕、该屏幕中被修改的字段(即提交的数据)以及响应。
对于每个屏幕,仅显示第一行作为上下文,但查看事务时可以打印完整屏幕。
此外,你还可以进入 Python 环境直接检查屏幕对象。
在这里你可以执行区分大小写的搜索,查找包含特定文本的屏幕事务。
你可以将历史保存到文件中,以后使用命令行 -l 开关重新加载。需要将历史保存为唯一的文件名。
该工具尚未完成,目前有许多很好的理由允许直接操作对象。你可以在多个位置进入嵌入式的 IPython 环境。BIRP 包含一组相当有用的 Python 对象供你查询,并且我确保它们具有实用的 Python 输出(str/repr)。顶层对象是 history,它包含一个 transactions 列表。你可以通过 history.last() 查询最后添加的事务。每个事务都有一个请求和响应屏幕对象。例如,要获取服务器最后一个响应中的所有隐藏字段列表,可以使用:history.last().response.hidden_fields
更多细节,最好查看 tn3270.py 模块。
Python 库:py3270 (v0.3.4)、colorama、IPython
这些库可以通过 pip 或 easy_install 安装。
在该 pull request (https://github.com/py3270/py3270/pull/13) 被 py3270 接受之前,请使用我的 py3270 库 (https://github.com/singe/py3270)。
修改过的 x3270 客户端 (v3.6)
补丁已包含在内。你可以从 http://x3270.bgp.nu/download.html 下载源码,解压后进入 suite3270 目录,然后运行 patch -p1 < suite3270-full.patch。
你也可以使用未修改的客户端,但那样将无法编辑受保护字段。
该补丁做了两项修改:一是允许编辑受保护字段,二是使隐藏字段可见(以反色高亮显示)。如果你只需要其中一项功能,这两个修改被分成了单独的补丁文件。
我使用的按键处理功能是我自己实现的 getch。它相当丑陋,但能用。我很想使用更成熟的按键处理实现,如 curses、pygame、urwid 等,但它们都要接管你的屏幕。我个人认为,回滚缓冲区对于记录操作或滚动查看历史非常宝贵,因此我不想失去这一功能,所以采用了这种方法。
我发现 py3270 相当粗糙,于是对其进行了部分封装。我将此封装作为一个独立的包装器提供,你可以在自己的程序中使用。
联系方式:dominic () sensepost.com (@singe)
Big Iron Recon & Pwnage 由 SensePost 采用 Creative Commons Attribution-ShareAlike 4.0 International License (http://creativecommons.org/licenses/by-sa/4.0/) 授权。
超出本许可证范围的许可,请访问 http://sensepost.com/contact us/ 联系。