*本工具仅供技术分享、交流讨论,严禁用于非法用途。

a.png

写在前面的话

LES安全工具由Z-Labs开发并负责维护,可帮助安全测试人员以及安全分析专家在对Linux设备进行红队测试/渗透测试的过程中寻找关键漏洞。在这篇文章中,我将介绍这款工具的运行机制,并教会大家如何高效地使用LES。

工具介绍

为了完成渗透测试任务并兼容不同Linux发行版系统,LES使用了大量的启发式方法来实现其主要功能,同时为给定的Linux设备生成候选漏洞列表,以最大程度地降低假阳性以及误报率。此外,出于工具实用性以及维护便利性开率,该工具还实现了以下特性:

1、子系统标记,针对目前大部分流行的Linux发行版,其中包括Debian、Ubuntu、RHEL/CentOS。

2、用户空间分析子系统,完全支持基于deb和rpm的发行版系统,部分支持其他发行版。

在LES的早期版本中,LES只会处理内核版本,这种方式完全跳过了发行版版本的问题,大部分主要处理功能都通过Linux_Exploit_Suggester脚本来实现。但是这种方式并不是非常有效,因为容易出现误报的问题,从而产生大量需要手动分析的漏洞。

随着时间的推移,LES也得到了改进,并通过生成候选漏洞列表的方式来解决之前的问题:

1、 基于内核版本生成初始漏洞列表;

2、 检查每个漏洞的“标签”命中率;

3、 基于“附加检查”舍弃不适用的漏洞利用;

4、 计算每个候选漏洞的内部度量(“等级”),并根据计算对列表排序。

接下来,我们将一一进行讨论。

基于内核版本生成初始漏洞列表

这是减少给定设备候选漏洞攻击数量的第一步。LES会解析uname命令的输出结果,并获取准确的内核版本信息,然后再跟漏洞利用代码中定义的版本信息进行对比。例如:Reqs: pkg=linux-kernel,ver>=4.4,ver<=4.13,…

检测标签匹配

为了降低假阳性,并进一步减少候选漏洞数量,提升目标系统的适用性,LES还引入了“标签”的概念。标签是描述内核版本的简单语句,并标明给定的漏洞可以适用于这些系统版本,语句主要由正则表达式组成。例如:Tags: RHEL=6,RHEL=7{kernel:3.10.0-514.21.2|3.10.0-514.26.1}。“标签”并不会舍弃候选漏洞列表中的实体数量,而是将更加适用的对象“往前放”。

舍弃不适用的漏洞

为了进一步优化候选漏洞列表,LES还引入了额外的参数要求(Reqs域)。在向LES中添加漏洞利用实体时,我们可以定义下列条件:

Reqs:pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y, \

sysctl:kernel.unprivileged_userns_clone==1

上述条件表明内核版本必须>3.2并且<=4.10.6,而且内核的用户命名空间功能还必须以CONFIG_USER_NS=y进行编译,并启动该功能(sysctl:kernel.unprivileged_userns_clone==1)。

对于不常用的检测情况,LES还提供了运行任意BASH命令的功能,以便研究人员查看漏洞是否适用于给定系统。例如:

Reqs:pkg=linux-kernel,ver>=4.4.0,ver<=4.4.0,cmd:grep -qi ip_tables/proc/modules

在上述场景中,命令“grep -qi ip_tables /proc/modules”主要用来判断ip_tables模块是否已加载,并根据命令返回值(TRUE或FALSE)来判断漏洞是否适用于该系统。

基于排名动态生成的漏洞排序列表

最后,LES会根据动态计算的等级(Rank)结果对列表中的现有漏洞及西宁排序,等级越高则在列表中的位置越靠前,也就是漏洞适用于给定系统的概率会越高。

Rank计算基于下列规则:

1、 针对普通漏洞的初始rank为1。

2、 针对优秀漏洞的初始rank为5,例如dirtycow和eBPF_verifier等等。

3、 针对较差漏洞的初始rank为0,例如不稳定的或不适用的漏洞。

4、 如果待测Linux发行版系统版本匹配其中一个标签,则Rank加2。

5、 如果待测Linux发行版系统版本正则表达式匹配其中一个标签,则Rank加5。

例如,LES针对dirtycow漏洞利用的Rank计算方式如下,运行版本为Ubuntu 16.04,内核版本为4.4.0-21-generic:

Inital rank: 5

Distribution version match: +2 to rank

kernel version regex match: +5 to rank

final rank: 12

功能介绍

接下来,我们一起看看如何使用LES吧!

基本使用场景下,所有的步骤都会按顺序执行来生成候选漏洞列表:

$./les.sh

–cvelist-file选项可以用来设置完整的CVE列表,如果目标系统受其中漏洞影响的话,LES将会用其进行测试,列表可以通过https://api-ksplice.oracle.com/api/1/update-list/生成:

$./les.sh --cvelist-file <cve-listing-file>

在红队研究的过程中,我们还可以“间接”运行LES来对目标(例如HIDS)执行更加严格的监控:

victim-host$dpkg -l > pkgsListing.txt

pentester-host$./les.sh --uname "<uname-a-from-victim>" --pkglist-filepkgsListing.txt

在对目标设备进行漏洞利用测试之前,我们通常还需要检查目标内核是否使用了其他加固措施:

$./les.sh --checksec

工具快速下载

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh-O les.sh

项目地址

LES:【GitHub传送门

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

Yaazhini是一款针对Android APK和API的免费漏洞扫描工具,这款工具提供了用户友好的操作界面,广大移动端安全研究人员可以在Yaazhini的帮助下,轻松扫描任何Android应用程序的APK文件以及API接口,而且Yaazhini还会给你提供非常丰富的扫描结果数据。

工具下载

Windows版本:【点我下载】(98.7MB)

macOS版本:【点我下载】(75.8MB)

系统要求

操作系统:macOS(64位),Windows(64位 & 32位)

运行内存:最小运行内存为4GB,建议运行内存为16GB(针对大型Android项目)

磁盘空间:10GB磁盘空间

依赖组件:Java 1.8+

Yaazhini的优势

1、 一键即可扫描Android APK文件;

2、 支持扫描Android端应用程序REST API(模拟器或实体设备);

3、 生成格式化扫描报告;

4、 免费使用;

5、 操作简单,界面友好;

Yaazhini-Android应用程序APK扫描

APK扫描功能演示:

使用步骤:

1、 开启Yaazhini应用程序;

2、 输入项目名称;

3、 上传需要扫描的APK文件;

4、 点击“Upload & Scan”(上传&扫描)按钮;

5、 扫描完成之后,我们将会查看到漏洞扫描详细报告;

Yaazhini-Android应用程序REST API扫描

Yaazhini-Android端应用程序REST API扫描功能可以帮助我们发现和识别下列攻击形式:

1、 SQL注入

2、 命令注入

3、 Header注入

4、 跨站脚本XSS

5、 安全Header缺失

6、 响应Header中的敏感信息泄露

7、 错误信息中的敏感信息泄露

8、 服务器端输入验证缺失

9、 禁止使用的HTTP方法

10、不正确的HTTP响应等等

Yaazhini-Android端应用程序REST API扫描功能使用演示:

演示视频

使用步骤:

1、 打开应用程序

2、 测试移动端设备

3、 创建一个新的项目

4、 在创建好的项目中添加新的请求

5、 提供正确的Header、URL和其他数据

6、 保存并运行扫描

7、 扫描完成后,点击生成报告

Yaazhini报告样本

Yaazhini-AndroidAPK扫描器生成的报告中会包含扫描结果的概述,并对已发现的风险进行风险评级。除此之外,它还会对每一个扫描到的安全风险进行详细的描述和介绍,并给出漏洞缓解方案。报告中的漏洞顺序根据危险等级排序。

报告样本:【点我获取

Yaazhini-移动端应用程序扫描器生成的报告中会包含扫描结果的概述,并对已发现的风险进行风险评级。除此之外,它还会对每一个扫描到的安全风险进行详细的描述和介绍,并给出漏洞缓解方案。报告中的漏洞顺序根据危险等级排序。

报告样本:【点我获取

项目官网

Yaazhini:【官网传送门

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

aaaaa.jpg

Versionscan

Versionscan是一款可以帮助安全研究人员评估PHP项目安全性的漏洞扫描及安全报告工具,它可以检测已知的CVE漏洞,并报告目标站点的潜在安全问题。

目前该工具仍在适配不同的Linux发行版。

工具安装

使用Composer

{

    "require": {

        "psecio/versionscan":"dev-master"

    }

}

该工具当前的依赖组件只有Symfony控制台。

工具使用

如果你需要直接对当前项目的PHP版本进行安全检查,可以直接运行下列命令:

bin/versionscan

脚本将会检测当前实例的PHP_VERSION信息,并自动生成扫描结果(是否通过安全检测)。输出的扫描结果格式大致如下:

微信截图_20190617172757.png

工具生成的扫描结果会以彩色的形式对“通过”和“未通过”进行高亮标注。

PHP版本检测

如果你想要给工具指定扫描的PHP版本号,你可以使用php-version参数:

bin/versionscanscan --php-version=4.3.2

仅报告“未通过”项目

当然了,你也可以命令versionscan只报告未通过安全检测的项目实例:

bin/versionscanscan --fail-only

扫描结果排序

你还可以使用sort参数来对扫描结果进行排序,排序基于漏洞CVE ID的威胁评级:

bin/versionscanscan --sort=risk

输出格式

Versionscan的默认会直接将扫描结果以人类可读的形式输出至控制台,不过我们还可以定义其他的输出格式来帮助我们更好地使用这些扫描结果,比如说JSON格式。我们可以使用–format参数来修改输出格式:

vendor/bin/versionscanscan --php-version=5.5 --format=json

目前,该工具支持的输出格式有console、json、xml和html。

HTML输出格式需要使用–output参数来指定文件输出路径:

vendor/bin/versionscanscan --php-version=5.5 --format=html --output=/var/www/output

工具会将输出结果写入至一个文件名类似“versionscan-output-20150808.html”的文件中。

项目地址

Versionscan:【GitHub传送门

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

1.jpg

根据安全研究人员的发现,近期一个名叫 Fxsmsp 的网络犯罪组织正在网上在线销售主流反病毒软件的源代码,而且售价金额高达30万美元。

研究人员表示,有目前三家知名反病毒公司的服务器遭到了一群俄罗斯黑客攻击的,而这群俄罗斯黑客声称自己的英文Fxsmsp 黑客组织的成员。他们表示,在入侵了这些反病毒厂商的内部网络后,成功窃取到了这些公司的反病毒软件源码。

2.jpg

需要注意的是,这个黑客组织不仅在俄罗斯境内的黑客论坛上享有盛名,而且很多英文黑客论坛也有他们的身影。更重要的是,这群黑客正在试图以超过30 万美元的价格出售他们窃取来的反病毒产品源代码以及内部文件。

根据AdvIntel 公司提供的报告,AdvIntel 的安全研究人员已经跟踪该黑客集团的活动有很长一段时间了,这个黑客组织长期以来以渗透网络而闻名,而这些网络都是受到严密保护的。除此之外,这个黑客组织还会窃取政府敏感信息以及其他敏感数据。

大约在两个月之前,AdvIntel 的安全研究人员发现,在大约一年半的时间里,Fxsmsp 突然出现在了主流黑客论坛上,而且在过去的六个月时间内,他们攻击了三家目前市场上主流的反病毒公司。在这个过程中,这群网络犯罪分子一直都在谨慎行事,但是在获得了超过30TB的数据之后,他们对外发布了攻击成功后的屏幕截图。

在屏幕截图中,我们可以看到这三个目标公司的软件产品源代码,项目目录以及相关文档。他们还声称,他们目前仍然可以访问这些公司的内部网络,并表示愿意跟那些支付了源代码销售费用的人分享更多的细节信息。

3.jpg

而且,目前这三家公司的情况非常令人担忧,因为这群黑客在窃取到了这些反病毒产品的源代码之后,他们可以轻而易举地找出其中的安全缺陷,并利用这些安全漏洞来实施更加可怕的网络攻击。除此之外,还他们可以针对这些安全漏洞来开发更加有效值的恶意软件或网络间谍工具

AdvIntel 还透露,Fxsmsp 最近还开发了一个专门用来窃取凭证数据的僵尸网络,而这个僵尸网络可以感染和入侵热门的网站,并从中窃取诸如用户名和密码之类的敏感数据。不过目前来看,该组织把近期的主要业务放在了攻击反病毒厂商之上。在审查了Fxsmsp 发布的攻击截图后,发现泄露的信息似乎与反病毒厂商的“开发文档,人工智能模型,Web 安全软件和反病毒软件基础代码”有关。

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

a.jpg

工具介绍

Python-Iocextract是一款高级入侵威胁标识符IoC提取工具,它可以从文本语料库提取URL、IP地址、MD5/SHA哈希、电子邮件地址和YARA规则,其中还包括某些已编码或已被“破坏”的入侵威胁标识符。

因为网络犯罪分子为了防止暴露自己的恶意活动以及攻击内容,通常都会想办法“破坏”类似URL和IP地址这样的入侵威胁标识符。在这种情况下,有效提取和汇总这些IoC对于安全分析人员来说就非常有价值了。但不幸的是,对于现有的IoC提取工具来说,标准的正则表达式往往无法捕捉到这些东西。

比如说,下面这个样本就使用了括号来进行IoC隐藏:

127[.]0[.]0[.]1

这种情况下,基于简单正则表达式匹配的工具就无法提取出这种IoC了。

但是对于Python-Iocextract来说,情况就不一样了。通过使用精心设计的正则表达式以及反混淆检测技术,我们既可以检测到“被破坏”的IoC,也可以还原初始的IoC,为分析人员节省了时间和精力。

工具安装

在使用Python-Iocextract之前,我们需要安装Python开发环境以及regex依赖。在Ubuntu和Debian等Linux系统中,可以使用下列命令完成安装:

sudo apt-get install python-dev

接下来,使用pip命令安装iocextract:

pip install iocextract

在Windows平台下,点击【这里】下载regex安装包:

pip install regex-2018.06.21-cp27-none-win_amd64.whl

工具使用

提取某些已被破坏的URL地址:

>>>content = """

... Ireally love example[.]com!

...All the bots are on hxxp://example.com/bad/url these days.

...C2: tcp://example[.]com:8989/bad

..."""

>>>import iocextract

>>>for url in iocextract.extract_urls(content):

...     print url

...

hxxp://example.com/bad/url

tcp://example[.]com:8989/bad

example[.]com

tcp://example[.]com:8989/bad

如果匹配到多个正则表达式的话,可能会有某些URL地址出现两次。

如果有需要的话,你还可以还原IoC并移除某些常见的混淆技术:

>>>for url in iocextract.extract_urls(content, refang=True):

...     print url

...

http://example.com/bad/url

http://example.com:8989/bad

http://example.com

http://example.com:8989/bad

你甚至还可以提取并解码十六进制编码或Base64编码的URL地址:

>>>content ='612062756e6368206f6620776f72647320687474703a2f2f6578616d706c652e636f6d2f70617468206d6f726520776f726473'

>>>for url in iocextract.extract_urls(content):

...     print url

...

687474703a2f2f6578616d706c652e636f6d2f70617468

>>>for url in iocextract.extract_urls(content, refang=True):

...     print url

...

http://example.com/path

该工具中所有的extract_*函数返回的都是迭代器,而不是列表。因此,iocextract可以处理大量数据输入。但如果你想要迭代处理多次IoC,你将需要把结果存储为列表:

>>>list(iocextract.extract_urls(content))

['hxxp://example.com/bad/url','tcp://example[.]com:8989/bad', 'example[.]com','tcp://example[.]com:8989/bad']

命令行工具还包括:

$iocextract -h

usage:iocextract [-h] [--input INPUT] [--output OUTPUT] [--extract-emails]

              [--extract-ips] [--extract-ipv4s][--extract-ipv6s]

              [--extract-urls] [--extract-yara-rules][--extract-hashes]

              [--custom-regex REGEX_FILE][--refang] [--strip-urls]

              [--wide]

 

AdvancedIndicator of Compromise (IOC) extractor. If no arguments are

specified,the default behavior is to extract all IOCs.

 

optional arguments:

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

  --input INPUT         default: stdin

  --output OUTPUT       default: stdout

  --extract-emails

  --extract-ips

  --extract-ipv4s

  --extract-ipv6s

  --extract-urls

  --extract-yara-rules

  --extract-hashes

  --custom-regex REGEX_FILE

                        file with custom regexstrings, one per line, with one

                        capture group each

  --refang              default: no

  --strip-urls          remove possible garbage from the endof urls. default:

                        no

  --wide                preprocess input to allowwide-encoded character

                        matches. default: no

目前,该工具只支持恢复URL、电子邮件以及IPv4地址。

Python-Iocextract支持的IoC

IP地址

1、 完全支持IPv4

2、 部分支持IPv6

URL地址

1、 协议标识符:http, https, tcp,udp, ftp, sftp, ftps

2、 [.]锚点

3、 十六进制编码URL:http, https, ftp

4、 URL编码URL:http, https, ftp, ftps, sftp

5、 Base64编码URL:http, https, ftp

电子邮件地址

支持部分@或at锚点

YARA规则

导入、包含和注释

哈希

1、 MD5

2、 SHA1

3、 SHA256

4、 SHA512

针对IPv4地址,支持扫描下列混淆技术:

b.png

针对电子邮件地址,支持扫描下列混淆技术:

c.png

针对URL地址,支持扫描下列混淆技术:

d.png

项目地址

Python-Iocextract:【GitHub传送门

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

Machinae v1.4.8:一款功能强大的信息收集自动化工具

Machinae安全情报收集工具

Machinae这款开源工具可以帮助广大研究人员从各个开放网站/feed收集跟网络安全有关的数据,例如IP地址、域名、URL、电子邮件地址、文件哈希和SSL指纹等等。

该工具受到了Automater的启发,旨在从以下四个方面提升原工具的功能:

1、 源代码:将Automater以Python 3进行重构,提升功能扩展性;

2、 配置:使用了可读性更强的配置格式-YAML;

3、 输入:支持JSON格式解析,需编写正则表达式;

4、 输出:支持额外的输出类型,包括JSON等可选项

工具安装

大家可以使用pip3来安装Machinae:

pip3 install machinae

或者,大家也可以直接从本项目的GitHub代码库上将代码克隆至本地:

pip3 install git+https://github.com/HurricaneLabs/machinae.git

点击【这里】获取最新版本的工具配置文件,并将其存入/etc/machinae.yml。

工具使用

Machinae的使用跟Automater非常相似:

usage:machinae [-h] [-c CONFIG] [--nomerge] [-d DELAY] [-f FILE] [-i INFILE] [-v]

            [-o {D,J,N,S}] [-O{ipv4,ipv6,fqdn,email,sslfp,hash,url}] [-q]

            [-s SITES] [-a AUTH] [-HHTTP_PROXY]

            [--dump-config | --detect-otype]

            ...

1、 使用“-c/–config”和 “–nomerge”选项来查看命令细节;

2、 Machinae支持“-d/–delay”选项,这个跟Automater类似,但Machinae默认使用参数值为“0”。

3、 Machinae的输出由下列两个参数控制:

“-o“控制输出格式,可以使用下列命令实现控制:

(1)“N“为默认标准输出;

(2)“D“为默认标准输出格式,但“.”字符会被替换;

(3)“J“为JSON输出;

“-f/--file“指定输出文件的写入位置,默认“-”为stdout。

4、 Machinae还支持使用“-H”或“–http-proxy”命令行参数来设置HTTP代理。

数据源

Machinae支持以下数据来源(更多数据源正在添加中…):

IPVoid

URLVoid

URLUnshortener (http://www.toolsvoid.com/unshorten-url)

Malc0de

SANS

FreeGeoIP(freegeoip.io)

FortinetCategory

VirusTotalpDNS (通过网络爬虫)

VirusTotalpDNS (通过JSONAPI)

VirusTotalURL Report (通过JSON API)

VirusTotalFile Report (通过JSON API)

ReputationAuthority

ThreatExpert

VxVault

ProjectHoneypot

McAfee威胁情报

StopForumSpam

CymruMHR

ICSICertificate Notary

TotalHash(默认禁用)

DomainToolsParsed Whois (需要API密钥)

DomainToolsReverse Whois (需要API密钥)

DomainToolsReputation

IPWHOIS (实用RIRREST接口)

HackedIP

MetadefenderCloud (需要API密钥)

GreyNoise(需要API密钥)

IBMXForce (需要API密钥)

HTTP基础认证与配置

Machinae支持在目标站点的HTTP基础认证功能,广大用户可以实用“–auth/-a”参数来开启该功能。此时,我们将需要创建一个包含用户凭证的YAML文件,其中要填写网站的密钥和相应凭证信息,格式大致如下:

passivetotal:['[email protected]', 'my_api_key']

在request配置域中,你还会看到如下格式的密钥:

json:

  request:

    url: '...'

auth: passivetotal

其中,auth: passivetotal指的是认证配置文件中的密钥,通过命令行传递。

默认禁用的站点

下面这些是该工具禁用的站点:

FortinetCategory (fortinet_classify)

TelizeGeo IP (telize)

TotalHash(totalhash_ip)

DomainToolsParsed Whois (domaintools_parsed_whois)

DomainToolsReverse Whois (domaintools_reverse_whois)

DomainToolsReputation (domaintools_reputation)

PassiveTotalPassive DNS (passivetotal_pdns)

PassiveTotalWhois (passivetotal_whois)

PassiveTotalSSL Certificate History (passivetotal_sslcert)

PassiveTotalHost Attribute Components (passivetotal_components)

PassiveTotalHost Attribute Trackers (passivetotal_trackers)

MaxMindGeoIP2 Passive Insight (maxmind)

FraudGuard(fraudguard)

Shodan(shodan)

HackedIP

MetadefenderCloud (需要API密钥)

GreyNoise(需要API密钥)

IBMXForce (需要API密钥)

数据输出格式

Machinae默认支持三种数据输出格式,即“常规格式”、“字符转义模式”和“JSON格式”,我们计划在将来添加更多的工具输出格式。

项目地址

Machinae:【GitHub传送门

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

Bandit:一款Python代码安全漏洞检测工具

工具介绍

Bandit这款工具可以用来搜索Python代码中常见的安全问题,在检测过程中,Bandit会对每一份Python代码文件进行处理,并构建AST,然后针对每一个AST节点运行相应的检测插件。完成安全扫描之后,Bandit会直接给用户生成检测报告。

工具安装

Bandit使用PyPI来进行分发,建议广大用户直接使用pip来安装Bandit。

创建虚拟环境(可选):

virtualenv bandit-env

安装Bandit:

pip install bandit

# Or if you're working with a Python 3 project

pip3 install bandit

运行Bandit:

bandit -r path/to/your/code

用户还可以使用源码文件直接安装Bandit,先从PyPI下载原tarball,然后运行下列命令:

python setup.py install

工具使用

节点树使用样例:

bandit -r ~/your_repos/project

examples/目录遍历使用样例,显示三行内容,并只报告高危问题:

bandit examples/*.py -n 3 –lll

Bandit还能够结合配置参数一起运行,运行下列命令即可使用ShellInjection来对examples目录运行安全扫描:

bandit examples/*.py -p ShellInjection

Bandit还支持使用标准输入模式来扫描指定行数的代码:

cat examples/imports.py | bandit –

使用样例:

$bandit -h

usage:bandit [-h] [-r] [-a {file,vuln}] [-n CONTEXT_LINES] [-c CONFIG_FILE]

              [-p PROFILE] [-t TESTS] [-sSKIPS] [-l] [-i]

              [-f{csv,custom,html,json,screen,txt,xml,yaml}]

              [--msg-template MSG_TEMPLATE] [-o[OUTPUT_FILE]] [-v] [-d] [-q]

              [--ignore-nosec] [-x EXCLUDED_PATHS] [-bBASELINE]

              [--ini INI_PATH] [--version]

              [targets [targets ...]]

 

Bandit- a Python source code security analyzer

 

positionalarguments:

  targets               source file(s) or directory(s)to be tested

 

optionalarguments:

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

  -r, --recursive       find and process files in subdirectories

  -a {file,vuln}, --aggregate {file,vuln}

                        aggregate output byvulnerability (default) or by

                        filename

  -n CONTEXT_LINES, --number CONTEXT_LINES

                        maximum number of codelines to output for each issue

  -c CONFIG_FILE, --configfile CONFIG_FILE

                        optional config file touse for selecting plugins and

                        overriding defaults

  -p PROFILE, --profile PROFILE

                        profile to use(defaults to executing all tests)

  -t TESTS, --tests TESTS

                        comma-separated list oftest IDs to run

  -s SKIPS, --skip SKIPS

                        comma-separated list oftest IDs to skip

  -l, --level           report only issues of a givenseverity level or higher

                        (-l for LOW, -ll for MEDIUM, -lll forHIGH)

  -i, --confidence      report only issues of a given confidencelevel or

                        higher (-i for LOW, -iifor MEDIUM, -iii for HIGH)

  -f{csv,custom,html,json,screen,txt,xml,yaml}, --format{csv,custom,html,json,screen,txt,xml,yaml}

                        specify output format

  --msg-template MSG_TEMPLATE

                        specify output messagetemplate (only usable with

                        --format custom), seeCUSTOM FORMAT section for list

                        of available values

  -o [OUTPUT_FILE], --output [OUTPUT_FILE]

                        write report tofilename

  -v, --verbose         output extra information like excludedand included

                        files

  -d, --debug           turn on debug mode

  -q, --quiet, --silent

                        only show output in thecase of an error

  --ignore-nosec        do not skip lines with # nosec comments

  -x EXCLUDED_PATHS, --exclude EXCLUDED_PATHS

                        comma-separated list ofpaths (glob patterns supported)

                        to exclude from scan(note that these are in addition

                        to the excluded pathsprovided in the config file)

  -b BASELINE, --baseline BASELINE

                        path of a baselinereport to compare against (only

                        JSON-formatted filesare accepted)

  --ini INI_PATH        path to a .bandit file that suppliescommand line

                        arguments

  --version             show program's version number andexit

 

CUSTOMFORMATTING

-----------------

 

Availabletags:

 

    {abspath}, {relpath}, {line},  {test_id},

    {severity}, {msg}, {confidence}, {range}

 

Exampleusage:

 

    Default template:

    bandit -r examples/ --format custom--msg-template \

    "{abspath}:{line}: {test_id}[bandit]:{severity}: {msg}"

 

    Provides same output as:

    bandit -r examples/ --format custom

 

    Tags can also be formatted in python string.format()style:

    bandit -r examples/ --format custom--msg-template \

    "{relpath:20.20s}: {line:03}:{test_id:^8}: DEFECT: {msg:>20}"

 

    See python documentation for moreinformation about formatting style:

    https://docs.python.org/3.4/library/string.html

 

Thefollowing tests were discovered and loaded:

-----------------------------------------------

 

  B101 assert_used

  B102 exec_used

  B103 set_bad_file_permissions

  B104 hardcoded_bind_all_interfaces

  B105 hardcoded_password_string

  B106 hardcoded_password_funcarg

  B107 hardcoded_password_default

  B108 hardcoded_tmp_directory

  B110 try_except_pass

  B112 try_except_continue

  B201 flask_debug_true

  B301 pickle

  B302 marshal

  B303 md5

  B304 ciphers

  B305 cipher_modes

  B306 mktemp_q

  B307 eval

  B308 mark_safe

  B309 httpsconnection

  B310 urllib_urlopen

  B311 random

  B312 telnetlib

  B313 xml_bad_cElementTree

  B314 xml_bad_ElementTree

  B315 xml_bad_expatreader

  B316 xml_bad_expatbuilder

  B317 xml_bad_sax

  B318 xml_bad_minidom

  B319 xml_bad_pulldom

  B320 xml_bad_etree

  B321 ftplib

  B322 input

  B323 unverified_context

  B324 hashlib_new_insecure_functions

  B325 tempnam

  B401 import_telnetlib

  B402 import_ftplib

  B403 import_pickle

  B404 import_subprocess

  B405 import_xml_etree

  B406 import_xml_sax

  B407 import_xml_expat

  B408 import_xml_minidom

  B409 import_xml_pulldom

  B410 import_lxml

  B411 import_xmlrpclib

  B412 import_httpoxy

  B413 import_pycrypto

  B501 request_with_no_cert_validation

  B502 ssl_with_bad_version

  B503 ssl_with_bad_defaults

  B504 ssl_with_no_version

  B505 weak_cryptographic_key

  B506 yaml_load

  B507 ssh_no_host_key_verification

  B601 paramiko_calls

  B602 subprocess_popen_with_shell_equals_true

  B603 subprocess_without_shell_equals_true

  B604 any_other_function_with_shell_equals_true

  B605 start_process_with_a_shell

  B606 start_process_with_no_shell

  B607 start_process_with_partial_path

  B608 hardcoded_sql_expressions

  B609 linux_commands_wildcard_injection

  B610 django_extra_used

  B611 django_rawsql_used

  B701 jinja2_autoescape_false

  B702 use_of_mako_templates

  B703 django_mark_safe

基准线

Bandit允许用户指定需要进行比对的基线报告路径:

bandit -b BASELINE

这样可以帮助大家忽略某些已知问题,或者是那些你不认为是问题的“问题”。大家可以使用下列命令生成基线报告:

bandit -f json -o PATH_TO_OUTPUT_FILE

版本控制整合

安装并使用pre-commit,将下列内容添加至代码库的.pre-commit-config.yaml文件中:

repos:

-   repo: https://github.com/PyCQA/bandit

    rev: '' # Update me!

    hooks:

- id: bandit

然后运行pre-commit即可。

扩展Bandit

Bandit允许用户编写和注册扩展以实现自定义检测或格式化(Formatter)功能。Bandit可以从下列两个节点加载插件:

bandit.formatters

bandit.plugins

Formatter需要接收下列四种输入参数:

result_store:一个bandit.core.BanditResultStore实例

file_list:需要扫描检测的文件列表

scores:每个文件的扫描评分

excluded_files:列表中不需要扫描的文件

利用bandit.checks来对特定类型的AST节点进行检测扫描:

@bandit.checks('Call')

defprohibit_unsafe_deserialization(context):

    if 'unsafe_load' incontext.call_function_name_qual:

        return bandit.Issue(

            severity=bandit.HIGH,

            confidence=bandit.HIGH,

            text="Unsafe deserializationdetected."

        )

注册插件时Bandit给用户提供了两个选项:

1、 如果你直接使用了安装工具(setuptools),我们需要在setup调用中添加下列信息:

# Ifyou have an imaginary bson formatter in the bandit_bson module

# anda function called `formatter`.

entry_points={'bandit.formatters':['bson = bandit_bson:formatter']}

# Ora check for using mako templates in bandit_mako that

entry_points={'bandit.plugins':['mako = bandit_mako']}

2、 如果你使用的是pbr,你需要在setup.cfg文件中添加下列信息:

[entry_points]

bandit.formatters=

    bson= bandit_bson:formatter

bandit.plugins=

    mako = bandit_mako

项目地址

参考文档:【最新版本

Bandit:【GitHub传送门

漏洞提交:【传送门

许可证协议

本项目遵循Apache开源许可证协议。

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

今天给大家介绍的这款功能强大的开源工具名叫Scavenger,在该工具的帮助下,广大安全研究人员可以在不同的Paste站点上使用爬虫(Bot)来搜索用户泄露的凭证信息。

Scavenger:可在不同Paste站点爬取用户泄露凭证的强大工具Scavenger

自动化Snyk基于下列扫描结果:【已知漏洞

处于活动状态的Bot:【Bot in action

工具介绍

平时,本人喜欢自己写一些Bot代码来作为自己的OSINT项目工具,在这个项目中,我整合了大量代码,并能够从不同的Paste站点中收集用户泄露的敏感信息。

支持搜索的内容:

1、 用户凭证

2、 RSA私钥

3、 WordPress配置文件

4、 MySQL连接字符串

5、 Onion链接

6、 Onion内网文件链接(PDF、DOC、DOCX、XLS、XLSX)

这里需要提醒大家一下:

1、 Scavenger所使用的bot目前并不是非常完美,因为该项目的代码编写得比较仓促,因为“时间紧任务重”,而且很多编码细节也没能考虑周全,但之后我会慢慢修改这些东西。

2、 项目代码目前还没编写完成,之后还会添加更多的功能,比如说凭证数据库,以及很多整合的第三方库。

3、 如果你想使用本项目的代码,大家可以随意使用,而且大家也可以根据自己的需要来自定义开发。

4、 本工具仍存在一定假阳性,也就是有些凭证可能会无法正常获取,欢迎大家贡献自己的代码噢!

运行机制

Bot能够以下列两种主要模式运行:

1、 API模式

2、 爬取模式(使用TOR)

我强烈建议大家使用API模式,因为这种方法非常适用于针对Pastebin.com来爬取Paste内容,而且准确率非常高。我们要做的就是申请一个Pastebin.com专业版(Pro)账号,然后在网站白名单列表中添加你的公共IP。

运行下列命令即可以API模式运行Scavenger:

python run.py -0

注意:我们还有NAT模式可以使用,这种模式就不需要设置IP地址白名单了。

如果你想以爬取模式运行Bot的话,可以使用下列命令:

python run.py -1

注意:你需要在系统上安装TOR服务并监听端口9050。除此之外,你还需要在/etc/tor/torrc文件中添加下列参数:

MaxCircuitDirtiness 30

工具使用

如果你想了解更多工具使用信息,你可以使用-h/–help参数来运行Scavenger:

python run.py –h

输出结果如下:

22222222.png

目前,我只实现了Pastebin.com模块,现在正在开发针对Paste.org的模块,之后会及时更新脚本内容。

使用下列命令即可开启Pastebin.com模块:

python P_bot.py

爬取到的Paste会存储在data/raw_pastes中,直到数量超过48000为止。超过之后,工具会对爬取到的数据进行过滤和压缩,并移植对应目录中。所有包含了用户凭证的的Paste数据都会存储在data/files_with_passwords中。数据格式如下:

USERNAME:PASSWORD

当然了,我们还可以使用Scavenger的getProxyLogs.py文件来搜索代理日志(包含了用户名和密码对的URL):

python getProxyLogs.py data/raw_pastes

如果你想搜索特定字符串相关的元数据,你可以使用searchRaw.py(速度较慢):

python searchRaw.py SEARCHSTRING

使用下列命令可以查看Bot的统计数据:

python status.py

findSensitiveData.py脚本还可以搜索类似信用卡数据、RSA密钥或mysqli_connect字符串,脚本使用的是grep命令,因此对于大型文件的爬取速度会相对较慢。如果你想分析大量Paste的话,我建议你使用ELK-Stack。

python findSensitiveData.py data/raw_pastes

Scavenger还提供了两个脚本:stalk_user.py和stalk_user_wrapper.py,来帮助用户监控特定的Twitter用户。此时,该用户所有发布的推文都会被我们存储下来,而且每一个下载的URL也会被我存储下来。

python stalk_user_wrapper.py

项目地址

Scavenger:【GitHub传送门

参考资料

1、 https://jakecreps.com/2019/05/08/osint-collection-tools-for-pastebin/

2、 https://jakecreps.com/2019/01/08/scavenger/

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

今天给大家介绍的是一款名叫Project iKy的开源工具,广大研究人员可以利用该工具来从电子邮件中收集信息,该工具将会以数据图表的形式将分析结果反馈给用户。

1.png

项目介绍

首先,我们建议广大研究人员先将前端从之前的AngularJS更新为Angular。为了方便用户使用,我们在iKy-v1分支中仍然使用的是AngularJS,相关参考文档可以点击【这里】获取。

工具演示视频

视频地址:https://vimeo.com/326114716

工具安装

使用下列命令克隆项目代码库至本地:

git clone https://gitlab.com/kennbroorg/iKy.git

安装工具后端

首先,我们需要安装Redis:

wget http://download.redis.io/redis-stable.tar.gz

tar xvzf redis-stable.tar.gz

cd redis-stable

make

sudo make install

接下来,使用下列命令在终端开启后台服务器:

redis -server

Python依赖组件以及Celery

在使用该工具之前,我们需要安装相应的依赖组件:

pip install -r requirements.txt

打开另一个终端窗口,然后在backend目录中开启Celery:

./celery.sh

最后,再打开一个新的终端窗口,开启后端App(服务器端):

python app.py

安装工具前端

NodeJS

首先,我们要安装NodeJS

依赖组件

切换至frontend目录,并安装相应的依赖组件:

npm install

开启前端服务器

最后,使用下列命令开启前端服务器:

npm start

工具访问

打开浏览器,然后在浏览器地址栏中输入下列URL即可访问工具前端:

http://127.0.0.1:4200/

2.png

配置API密钥

当我们在浏览器中加载完应用程序之后,我们就可以打开API配置选项,并加载所需要的API密钥了:

1.Fullcontact:点击【这里】生成API密钥;

2.Twitter:点击【这里】生成API密钥;

3.Linkedin:只需加载账户的用户名及密码。

项目地址

ProjectiKy:【GitLab传送门

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

a.jpgMachinae安全情报收集工具

Machinae这款开源工具可以帮助广大研究人员从各个开放网站/feed收集跟网络安全有关的数据,例如IP地址、域名、URL、电子邮件地址、文件哈希和SSL指纹等等。该工具受到了Automater的启发,旨在从以下四个方面提升原工具的功能:

1、 源代码:将Automater以Python 3进行重构,提升功能扩展性;

2、 配置:使用了可读性更强的配置格式-YAML;

3、 输入:支持JSON格式解析,需编写正则表达式;

4、 输出:支持额外的输出类型,包括JSON等可选项;

工具安装

大家可以使用pip3来安装Machinae:

pip3 install machinae

或者,大家也可以直接从本项目的GitHub代码库上将代码克隆至本地:

pip3 install git+https://github.com/HurricaneLabs/machinae.git

点击【这里】获取最新版本的工具配置文件,并将其存入/etc/machinae.yml。

配置文件

Machinae提供了功能强大的配置整合系统,我们可以直接对系统默认配置文件machinae.yml进行修改来实现配置的更新,通过修改配置文件,我们可以实现整个系统环境中所有用户的配置修改。系统级配置文件位于项目当前目录下,可以使用MACHINAE_CONFIG环境变量来进行设置,或者直接在命令行中使用“-c”或“–config”来配置。当然了,如果你不想更新全局配置文件,你可以使用“–nomerge”选项来禁用该功能。

你可以在machinae.yml文件中进行下列设置来启用Fortinet Category站点:

fortinet_classify:

default: true

或使用下列命令禁用类似Virus Total pDNS这样的站点:

vt_ip:

  default: false

vt_domain:

  default: false

工具使用

Machinae的使用跟Automater非常相似:

usage:machinae [-h] [-c CONFIG] [--nomerge] [-d DELAY] [-f FILE] [-i INFILE] [-v]
            [-o {D,J,N,S}] [-O{ipv4,ipv6,fqdn,email,sslfp,hash,url}] [-q]
            [-s SITES] [-a AUTH] [-HHTTP_PROXY]
            [--dump-config | --detect-otype]
            ...

1、 使用“-c/–config”和 “–nomerge”选项来查看命令细节;

2、 Machinae支持“-d/–delay”选项,这个跟Automater类似,但Machinae默认使用参数值为“0”。

3、 Machinae的输出由下列两个参数控制:

“-o“控制输出格式,可以使用下列命令实现控制:

(1)“N“为默认标准输出;

(2)“D“为默认标准输出格式,但“.”字符会被替换;

(3)“J“为JSON输出;

“-f/–file“指定输出文件的写入位置,默认“-”为stdout。

4、 Machinae还支持使用“-H”或“–http-proxy”命令行参数来设置HTTP代理。

数据源

Machinae支持以下数据来源(更多数据源正在添加中…):

IPVoid

URLVoid

URLUnshortener (http://www.toolsvoid.com/unshorten-url)

Malc0de

SANS

FreeGeoIP(freegeoip.io)

FortinetCategory

VirusTotalpDNS (通过网络爬虫)

VirusTotalpDNS (通过 JSONAPI)

VirusTotalURL Report (通过 JSON API)

VirusTotalFile Report (通过 JSON API)

ReputationAuthority

ThreatExpert

VxVault

ProjectHoneypot

McAfee 威胁情报

StopForumSpam

CymruMHR

ICSICertificate Notary

TotalHash(默认禁用)

DomainToolsParsed Whois (需要 API 密钥)

DomainToolsReverse Whois (需要 API 密钥)

DomainToolsReputation

IPWHOIS (实用 RIRREST 接口)

HackedIP

MetadefenderCloud (需要 API 密钥)

GreyNoise(需要 API 密钥)

IBMXForce (需要 API 密钥)

HTTP基础认证与配置

Machinae支持在目标站点的HTTP基础认证功能,广大用户可以实用“–auth/-a”参数来开启该功能。此时,我们将需要创建一个包含用户凭证的YAML文件,其中要填写网站的密钥和相应凭证信息,格式大致如下:

passivetotal:['[email protected]', 'my_api_key']

在request配置域中,你还会看到如下格式的密钥:

json:
  request:
    url: '...'
auth: passivetotal

其中,auth: passivetotal指的是认证配置文件中的密钥,通过命令行传递。

默认禁用的站点

下面这些是该工具禁用的站点:

FortinetCategory (fortinet_classify)

TelizeGeo IP (telize)

TotalHash(totalhash_ip)

DomainToolsParsed Whois (domaintools_parsed_whois)

DomainToolsReverse Whois (domaintools_reverse_whois)

DomainToolsReputation (domaintools_reputation)

PassiveTotalPassive DNS (passivetotal_pdns)

PassiveTotalWhois (passivetotal_whois)

PassiveTotalSSL Certificate History (passivetotal_sslcert)

PassiveTotalHost Attribute Components (passivetotal_components)

PassiveTotalHost Attribute Trackers (passivetotal_trackers)

MaxMindGeoIP2 Passive Insight (maxmind)

FraudGuard(fraudguard)

Shodan(shodan)

HackedIP

MetadefenderCloud (需要 API 密钥)

GreyNoise(需要 API 密钥)

IBMXForce (需要 API 密钥)

数据输出格式

Machinae默认支持三种数据输出格式,即“常规格式”、“字符转义模式”和“JSON格式”,我们计划在将来添加更多的工具输出格式。

项目地址

Machinae:【GitHub传送门】 

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