渗透测试工具:The TrustedSec Attack Platform(TAP)

摘要

文中提及的部分技术、工具可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用!

文中提及的部分技术、工具可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用!

渗透测试工具:The TrustedSec Attack Platform(TAP)

TAP简介:

TAP是建立远程渗透测试的平台型软件。

作者是来自TrustedSec的David Kennedy@HackingDave

所支持系统:Linux(Ubuntu Linux为首选)。

TAP是用于建设远程渗透测试的平台。对于从事安全产业的人员来说,经常出差,无疑是一种负担,并且出差会大幅增加客户的开销。TAP是为了让部署变得超级简单而设计的,它会创建一个具有自我修复功能的稳定的平台来远程部署渗透测试平台,这样工作人员就不用经常出差啦。这个概念其实非常简单,你预配置一个全新的软件盒,然后运行TAP安装文件。这时,Linux上就会出现一个以你想 要的方式配置的服务。它所需要做的事情就是建立一个反向SSH隧道连接到接入互联网的那台机器上。现在你就可以从本地连接到服务器了。TAP会自动进行检测,在SSH连接失效时自动重建连接。

他还有很多其他功能,例如,在SSH失效时,它会连接到一个文本文件并执行命令。它会自动更新确保你在Ubuntu Linux(如果你的系统是Ubuntu Linux的话)上运行的是最新版本的软件包。

安装和卸载TAP:

安装TAP:

python setup.py - 执行此命令安装TAP。

卸载TAP:     

python setup.py - 执行此命令卸载TAP。

说明:

设置TAP时,你可能会对远程SSH服务器产生疑问,因为这里有一个暴露SSH的扩展包。这个包就是你想让安装了TAP的机器连接到的地方,而安装了TAP的机器在互联网中等待连接。我们不推荐使用root权限,因为这个监督过程很安全。 

使用普通用户权限来建立SSH隧道即可。现在它能使用密码进行SSH连接,但是稍后我们就会为SSH密钥增加保护。这个密码使用AES加密进行保存,然而 在当前状态下加密密钥的储存并不安全。某些可以访问扩展包的人可能会获得密码并在足够的时间下解密配置中的密钥。我们将在后续版本中解决这个问题。

第二个问题是本地端口会在远程包中出现。当TAP通过反向SSH连接回到本地时,它会连接到远程包上并在机器上建立一个本地端口。当你在互联网中SSH到远程包时,你会使用ssh user@localhost -p。这个就是TAP连接到的你能访问的远程系统中的端口。

TAP拥有一个默认路径进行更新,你可以通过配置来改变更新路径。我特意在github上保留了这个配置,这样你就可以指定你想要更新的内容了。

接下来,你可以发命令给TAP,它每两分钟就会检查新的命令。你需要指定一个路径保存命令,例如:

https://websiteurl/commands.txt

TAP每两分钟就会检查一次这个路径来获取新的命令。注意,接下来这部分非常 重要!这个文本文件的第一行必须包含"执行命令"(不包括双引号)。一旦TAP识别了这个文件,它会检查这个命令之前是否被执行过,如果没有被执行过,它 会一行接一行的执行命令。当TAP失去连接或需要调用执行命令修复TAP时,这个功能将非常有用。

一旦你运行安装程序,TAP会在/usr/share/tap下安装文件。如果你进行设置,它会自动启动并自动检查更新Debian, TAP等程序。

如果你使用的是Debain并且你连接回你的远程包,你应该设置白名单更新服务器。

在你决定不使用SSH密钥而使用密码的情况下,配置以AES格式(需要Python-pycrypto)储存。如果你需要更新密码,去脚本目录进行更新,那里有一个密码更新脚本来更新加密的密码并创建一个新的动态密钥。

还有一个绝招!我们还为SSH VPN写了一个小工具。如果你不需要进行如端口扫描、漏洞扫描这种耗费大流量的工作,这个小工具非常好用。下面这个小工具通过包装sshuttle来创建 VPN。保存下面的文件,转成python文件,使用命令行控制就可以了。它会通过VPN连接部署TAP的远程网络。只要不进行耗费大流量的工作,你可以 使用它做任何事情,并且运行起来非常稳定。

这里有两种处理VPN的方法,第一种是通过SSHuttle的方式处理。你还可以使用来 自TrustedSec的Geoff  Walton编写的位于脚本文件夹中的VPN来处理。它会创建一个TAP接口,通过SSH把你连接进你需要进入的系统。因为使用SSHuttle方式时, 扫描端口的工作并不会进行的非常顺利,所以我们极力推荐使用SSH隧道脚本。

由Dave Kenney@HackingDave编写的简单的SSHUTTLE脚本    

import os import subprocess import time         if not os.path.isfile("/usr/sbin/sshuttle"): print       subprocess.Popen("apt-get install sshuttle -f", shell=True).wait()       print "Welcome to the sshuttle wrapper for TAP."       print "Enter the address for the SSH server, i.e. box.sshserver.com"       reverse1 = raw_input("Enter SSH server (REMOTE server): ")       reverse2 = raw_input("Enter the remote SSH port for %s:: " % (reverse1))       reverse3 = raw_input("Enter the port to tunnel for the local TAP machine (i.e. TAP box localhost port): ")       reverse4 = raw_input("Enter the username to connect to REMOTE system: ")       print "Triggering tunnel now..."       time.sleep(2)       subprocess.Popen("ssh -f %s@%s -L %s:localhost:%s -N" % (reverse4, reverse1, reverse3, reverse2), shell=True).wait()       subprocess.Popen("sshuttle --dns -vr %s@localhost:%s 0/0" % (reverse4,reverse3), shell=True).wait()

TAP使用proxychains4 (proxychains-ng)通过SSH来连接你所有的http/https流量到你的远程包。这有助于content/egress过滤以确保你总 是实时更新所有内容。输入proxychains4就可以使用proxychain了,TAP会使用它进行自动更新。

日志记录

在安装过程中,TAP将提示你是否想要在系统上记录所有执行过的命令。如果你想记录,所有被输入到系统中的命令都将被记录在日志中,这样你可以把日志提供给客户或在设备上保存记录防止发生事故。所有的日志都被保存在/var/log/messsages路径下。

支持的操作系统

Ubuntu 14.04 LTS(能运行Debian和其他Ubuntu版本的系统)。

*原文:GitHub ,翻译/FireFrank 转载请注明来自Freebuf黑客与极客(FreeBuf)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: