开源工具 | H1ve攻防训练平台(解题+AWD)

开源工具 | H1ve攻防训练平台(解题+AWD)

What is H1ve

AnEasy/Quick/CheapIntegrated Platform

https://github.com/D0g3-Lab/H1ve

H1ve是一款自研CTF平台,同时具备解题、攻防对抗模式。其中,解题赛部分对Web和Pwn题型,支持独立题目容器及动态Flag防作弊。攻防对抗赛部分支持AWD一键部署,并配备炫酷地可视化战况界面。

该作品随着安洵杯比赛进程,逐步开源,敬请期待。

How to use

git clone https://github.com/D0g3-Lab/H1ve.git cd H1ve

Single Mode

docker-compose -f single.yml up

Single-Nginx Mode

docker-compose -f single-nginx.yml up

Plugins Settings

CTFd-Owl

CTFd-Glowworm (Not open source yet)

Architecture

开源工具 | H1ve攻防训练平台(解题+AWD)

Open Source Schedule

解题赛CTFd版

– 攻防对抗赛CTFd版(预计2019/12/9)

– 一体化自研版(待定)

– 银河麒麟版(待定)

一体化自研版基于Flask、Docker、d3.JS、layui编写,已应用到数次AWD训练赛中,但由于前端框架layui为付费开发框架,不宜开源,目前仅在内部使用。

Live Demo

解题赛CTFd版

https://ctf.d0g3.cn

https://ctf.dao.ge(备用)

平台首页

开源工具 | H1ve攻防训练平台(解题+AWD)

CTF Challenge

开源工具 | H1ve攻防训练平台(解题+AWD)

基于CTFd进行二次开发,在保留CTFd稳定性的情况下,提供优化版前端界面,队伍隔离容器,动态Flag机制。

攻防对抗赛CTFd版(暂未开源)

AWD Challenge

开源工具 | H1ve攻防训练平台(解题+AWD)

一体化自研版

初始化比赛信息

开源工具 | H1ve攻防训练平台(解题+AWD)

排行榜

开源工具 | H1ve攻防训练平台(解题+AWD)

银河麒麟版

编译界面

开源工具 | H1ve攻防训练平台(解题+AWD)

Project Vision

该平台设计的初衷,是为网安人才培养领域提供一个低成本、高成效的教学平台。希望通过线上解题、线下ADA赛制自动化部署流程,降低比赛举办难度。

希望能为新晋CTF战队提供简单易用的训练平台,并希望通过AWD,将攻防对抗体验引进大学、中学课堂,引导网安科班生建立兴趣,降低攻防技术的学习成本,进而逐步精进自身的网络安全实战技术。

Bugs Bounty Plan

若在使用过程中发现了平台Bug,欢迎提交Issue,我们会尽快修复。 贡献者ID将被加入平台的贡献者荣誉列表。 并有机会获得D0g3年度纪念礼品(定制T恤、感谢Logo银贴等)

Suggestions Bounty Plan

如果有哪些有助于“项目愿景”实现的意见和建议,欢迎提交Issue,或在“道格安全”官方微信公众号中留言。 重大可行建议贡献者的ID将被加入平台贡献者荣誉列表。

Copyright Affirm

本项目遵循Apache License 2.0开源许可

各大高校、安全团队、技术爱好者可随意使用该平台作为训练平台或举办内部训练赛,欢迎使用该平台进行公益性技术分享。

但不允许在未经许可的情况下,使用该平台代码开展商业培训、商业比赛、产品销售。尤其禁止恶意更换平台Logo及界面,开展任何营利性行为。

一经发现,使用者ID、相关商业机构名称将被挂在Github项目“抄袭者列表”。 同时D0g3,保留追求其法律责任的权力。

*本文作者:Ph0rse,转载请注明来自FreeBuf.COM

本文来源于互联网:开源工具 | H1ve攻防训练平台(解题+AWD)

基线检查平台之Linux与Windows

最近在做安全基线检查相关的,网上有一些代码比较零散;也有一些比较完整的项目,比如owasp中的安全基线检查项目,但是收费;还有一些开源且完整的,比如lynis,但是不符合我的要求。

我的要求如下:

能够对操作系统、中间件和数据库进行基线检查

脚本在系统上进行基线检查后的结果或者收集到的数据能够传输到一个服务端

服务端要做可视化展示

最终的效果是什么呢?最好能够达到阿里云里的安全基线检查的样子,差一点的话也没关系啦

本篇文章是代码中在centos7和win2012系统中将要检查的项目,参考CIS标准而来。代码在SecurityBaselineCheck 现在完成了Centos和Windows2012基线检查的编写,脚本(简称agent)只在要检查的服务器上运行并显示检查结果。之后会将检查的结果以json串的形式上传到基于django搭建的后端上,后端目前正在制作中。简要截图如下:

agent:

基线检查平台之Linux与Windows后端

基线检查平台之Linux与Windows

一、window检查的项目如下:

0×01 账户策略

1.1 密码策略

[+]确保强制密码历史值为5或更高

PasswordHistorySize=5

[+]确保密码最长使用期限值为90天或更少,但不为0

MaximumPasswordAge=90

[+]确保密码最短使用期限值为1或更多

MinimumPasswordAge=1

[+]确保密码必须符合复杂性要求值为enabled

PasswordComplexity=1

[+]确保用可还原的加密来存储密码值为Disabled

ClearTextPassword=0

[+]确保密码长度最小值值为8或更高

MinimumPasswordLength=8

1.2 账户锁定策略

[+]确保账户锁定时间值为15分钟或更长

LockoutDuration=15

[+]确保账户锁定阈值值为5或更少,但不为0

LockoutBadCount=5

[+]确保重置账户锁定计数器值为15分钟或更多,但值要小于Account lockout duration的值

ResetLockoutCount=15

0×02 审计策略

[+]审核策略更改:成功

AuditPolicyChange

[+]审核登录事件:成功,失败

AuditLogonEvents

[+]审核对象访问:成功

AuditObjectAccess

[+]审核进程跟踪:成功,失败

AuditProcessTracking

[+]审核目录服务访问:成功,失败

AuditDSAccess

[+]审核系统事件:成功,失败

AuditSystemEvents

[+]审核帐户登录事件:成功,失败

AuditAccountLogon

[+]审核帐户管理:成功,失败

AuditAccountManage

值的含义:

Setting value Explanation
0 Indicates that this setting is set to None.
1 Indicates that this setting is set to Success Audits Only.
2 Indicates that this setting is set to Failure Audits Only.
3 Indicates that this setting is set to Success and Failure Audits.
4 Indicates that this setting is set to None.

0×03 用户权限分配

[+]确保作为受信任的呼叫方访问凭据管理器值为空,没有设置任何用户

SeTrustedCredManAccessPrivilege

[+]确保以操作系统方式执行值为空,没有设置任何用户。

SeTcbPrivilege

[+]确保将工作站添加到域值仅为特定的用户或用户组,不能有513,514,515

SeMachineAccountPrivilege

[+]确保创建全局对象值为空

SeCreateGlobalPrivilege

[+]确保拒绝作为批处理作业登录包含Guests

SeDenyBatchLogonRight

[+]确保拒绝以服务身份登录包含Guests

SeDenyServiceLogonRight

[+]确保拒绝本地登录包含Guests

SeDenyInteractiveLogonRight

[+]确保从远程系统强制关机值为administrators本地组和s-1-5-32-549(域控的一个内置组)

SeRemoteShutdownPrivilege

[+]确保修改对象标签值为空

SeRelabelPrivilege

[+]确保同步目录服务数据值为空

SeSyncAgentPrivilege

0×04 安全选项

[+]确保账户:来宾账户状态值为已禁用

EnableGuestAccount=0

[+]确保账户:限制使用空密码的本地账户只能使用控制台登录值为Enabled

MACHINESystemCurrentControlSetControlLsaLimitBlankPasswordUse=4,1

[+]配置账户:重命名系统管理员账户

NewAdministratorName=”NewAdministrator”

[+]配置账户:重命名来宾账户

NewGuestName=”NewGuestName”

[+]确保交互式登录:不显示上次登录用户名值为Enabled

MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystemDontDisplayLastUserName=4,1

[+]确保交互式登录:无须按Ctrl+Alt+Del值为Disabled

MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystemDisableCAD=4,0

[+]确保交互式登录:计算机不活动限制值为900秒或更少

MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesSystemInactivityTimeoutSecs=4,900

[+]确保Microsoft 网络客户端: 将未加密的密码发送到第三方 SMB 服务器值为Disabled

MACHINESystemCurrentControlSetServicesLanmanWorkstationParametersEnablePlainTextPassword=4,0

[+]确保Microsoft网络服务器:暂停会话前所需的空闲时间数量值为15分钟或更少,但不为0

MACHINESystemCurrentControlSetServicesLanManServerParametersAutoDisconnect=4,15

[+]确保网络安全:再下一次改变密码时不存储LAN管理器哈希值值为Enabled

MACHINESystemCurrentControlSetControlLsaNoLMHash=4,1

[+]确保网络访问:允许匿名SID/名称转换值为Disabled

LSAAnonymousNameLookup = 0

[+]确保网络访问:不允许SAM账户的匿名枚举值为Enabled

MACHINESystemCurrentControlSetControlLsaRestrictAnonymousSAM=4,1

[+]确保网络访问:不允许SAM账户和共享的匿名枚举值为Enabled

MACHINESystemCurrentControlSetControlLsaRestrictAnonymous=4,1

[+]确保关机:允许系统在未登录前关机值为Disabled

MACHINESystemCurrentControlSetControlSession ManagerMemory ManagementClearPageFileAtShutdown=4,0

0×05 远程访问安全

[+]确保RDP端口不为3389

for /f “skip=2 tokens=3″ %i in (‘REG query HKLMSYSTEMCurrentControlSetControlTerminal” “ServerWinStationsRDP-Tcp /v PortNumber’) do @echo %i

0×06 系统网络安全

关闭windows自动播放功能

reg add HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer /v NoDriveTypeAutoRun /t REG_DWORD /d 233 /f

二、Centos7检查的项目如下:

0×01 初始设置

1.1 文件系统配置:

将/tmp挂载至一个单独的分区

挂载时指定noexec,nosuid:不允许运行可执行文件

1.2 安全启动设置:

设置bootloader的配置文件的权限为600

设置bootloader的密码:进入引导界面需输入密码

为单用户启动认证机制

1.3 强制访问控制:

安装SELinux

设置SELinux的状态为enforcing

设置SELinux的policy为targeted

0×02 服务配置

2.1 时间同步设置:

开启时间同步服务

使用ntp或chrony来统一服务器的时间

不安装X-windows系统:即不使用可视化界面

0×03 网络配置

3.1 hosts设置:

配置/etc/hosts.allow与/etc/hosts.deny文件

配置/etc/hosts.allow与/etc/hosts.deny文件的权限为0644

配置/etc/hosts.allow与/etc/hosts.deny文件的属主为root

3.2 防火墙配置

安装iptables

设置各个Chain的默认策略为drop

0×04 审计设置

安装并使用auditd

配置记录审计日志的文件大小:8M

配置记录审计日志的文件个数:5

单个审计日志文件大小达到设定的值时触发的动作为:keep_logs/rotate

磁盘空间满后触发的动作为:rotate

auditd需配置的一些规则:

 规则:审计更改日期和时间的操作
 规则:审计更改用户/组信息的操作
 规则:审计更改系统网络环境的操作
 规则:审计更改系统强制访问控制的操作
 规则:审计登入登出系统的事件
 规则:审计企图改变文件权限的操作
 规则:审计未授权情况下企图访问文件未成功的事件
 规则:审计使用提权命令的操作
 规则:审计删除文件的操作????
 规则:审计sudoers文件的变更
 规则:审计sudoers日志文件的变更????
 规则:审计日志文件audit.log不能被改变

0×05 日志设置

安装并启用`rsyslog`

0×06 认证授权

6.1 配置cron:

开启cron服务

配置 /etc/crontab,/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly,//etc/cron.d文件的权限为0700

设置cron.allow:只允许特定的用户可以使用cron

6.2 配置SSH:

配置/etc/ssh/sshd_config文件的权限为0600

关闭X11Forwarding

设置最大认证尝试次数:4

开启IgnoreRhosts:不启用基于主机的认证

关闭HostbasedAuthentication: 关闭基于主机的认证

禁止使用root直接登录:PermitRootLogin no

禁止使用空密码登录:PermitEmptyPasswords no

禁止用户环境:PermitUserEnvironment no

设置使用的MAC算法:

 hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com,curve25519sha256@libssh.org,diffie-hellman-group-exchange-sha256 

设置空闲超时时间:180秒ClientAliveInterval 180

设置一次登录花费时间:120秒LoginGraceTime 120

6.3 配置PAM:

密码长度最少位数:12

密码中最少字符类型数:3

配置密码锁定:????

配置密码重用限制:不使用最近5次的密码

配置密码hash算法:SHA512

6.5 用户账户和环境设置:

密码有效时间:90天

密码更改最短间隔:7天

密码过期警告:7天

自动禁用特定时间内没有活动的账号:365天

配置系统账号的无法登录

配置root账号默认群组的GID为0

配置umask的默认值为027???

配置shell超时关闭会话时间:180

配置可以使用su命令的用户

0×07 系统维护

7.1 重要文件权限:

 /etc/passwd 0644 uid 0 gid 0
 /etc/shadow 0000 uid 0 gid 0
 /etc/group 0644 uid 0 gid 0
 /etc/gshadow 0000 uid 0 gid 0
 /etc/passwd- 0644 uid 0 gid 0
 /etc/shadow- 0000 uid 0 gid 0
 /etc/group- 0644 uid 0 gid 0
 /etc/gshadow- 0000 uid 0 gid 0

审计设置了SUID可执行文件的完整性 前面

审计设置了SGID的可执行文件的完整性

7.2 用户和组设置:

不允许密码为空的账号

只允许root账号的UID为0

设置path环境变量中的目录只有owner可写,group及other都没有w的权限

设置所有用户都有家目录

设置所有用户家目录的权限为0750

设置所有用户家目录的owner都为其自身

设置用户家目录内以.开头的文件,只有owner可写,group及other都没有w的权限

确保没有.netrc,.rhosts,.forward文件

确保所有在/etc/passwd中的组都在/etc/group

确保每个用户的UID都不同

确保每个组的GID都不同

确保用户名唯一

确保组名唯一

*本文作者:jerrybird,转载请注明来自FreeBuf.COM

本文来源于互联网:基线检查平台之Linux与Windows

INAV:一款专用的日志审查导航工具

INAV:一款专用的日志审查导航工具

LNAV

LNAV,即Log File Navigator,INAV是一款增强型日志文件查看工具,安全审计人员可以利用INAV来分析并检查日志文件,并从中收集到相关的语义信息,例如时间戳和日志级别。使用这些额外的语义信息,INAV可以做很多事情,比如比对来自不同文件的信息,生成信息的直方图,以及帮助审计人员在日志文件中实现快速定位即导航,并帮助研究人员快速有效地发现问题。

工具依赖

在构建和使用INAV之前,研究人员需安装下列工具依赖组件:

gcc/clang – 兼容C++14的编译器

libpcre – Perl兼容正则表达式(PCRE)库

sqlite – SQLite数据库引擎,需要3.9.0或更高版本

ncurses – 文本UI库

readline – readline文本编辑库

zlib – zlib压缩库

bz2 – bzip2压缩库

libcurl – 根据URL下载文件的cURL库,需要7.23.0或更高版本

工具安装

LNAV的安装和配置符合GNU风格,广大安全审计人员可以使用下列命令完成LNAV的安装:

$ ./configure

$ make

$ sudo make install

如果广大用户是直接使用下列命令将项目代码克隆至本地的话:

git clone https://github.com/tstack/lnav.git

那么我们就需要运行下列编译脚本来完成源码编译,在命令行中切换到源码目录,然后运行下列命令:

$ ./autogen.sh

Cygwin用户

当然了,大家也可以在Cygwin中完成源码编译。或者说,你也可以直接从AppVeyor中获取已生成好的源码。请记住,此时你仍然需要使用Cygwin来配置INAV的依赖组件,直接运行下列命令即可完成依赖配置:

setup-x86_64.exe -q -P libpcre1 -P libpcrecpp0 -P libsqlite3_0 -P libstdc++6

根据我们对目前版本的测试,INAV的x64版本会比x86版本更加稳定。

工具使用

安装完成后,广大用户可以直接在无参数的情况下来使用INAV,并查看日志文件:

$ lnav

你也可以使用下列命令来查看所有的syslog信息:

$ lnav /var/log/messages*

配合systemd-journald使用

如果系统中运行了systemd-journald,你也可以使用INAV配合systemd-journald一起使用:

$ journalctl | lnav

或者:

$ journalctl -f | lnav

由于journalctl的默认输出格式忽略了年份数据,因此如果你查看的日志跨越了多个年份的话,则需要更改输出格式以包含年份,否则lNAV可能会出现错误情况:

$ journalctl -o short-iso | lnav

journalctl也可以支持JSON输出格式,INAV还会使用到很多额外的数据域,例如PRIORITY和_SYSTEMD_UNIT:

工具截图

下列截图中显示的是一个系统日志文件(syslog),其中的关键内容已高亮显示,错误信息为红色标记,警告信息为黄色标记。

INAV:一款专用的日志审查导航工具

项目地址

GitHub:【传送门

官网:【传送门

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

本文来源于互联网:INAV:一款专用的日志审查导航工具

Stowaway:一款专为渗透测试人员设计的多级代理工具

Stowaway:一款专为渗透测试人员设计的多级代理工具

Stowaway是一款采用Go语言开发的多级代理工具,该工具专为渗透测试人员设计,广大用户可以使用该工具将外部流量通过多个节点代理至内网,并实现自定义管理功能。demo文件夹下为其Beta版本的demo,大家可以放心使用,如需获取更多demo相关内容,可以访问demo文件下的ReadME文件。

注意:此工具仅限于安全研究和教学,用户承担因使用此工具而导致的所有法律和相关责任!

功能介绍

1、简单易懂的节点管理模式

2、多级Socks5流量代理转发

3、SSH代理连接

4、远程交互式Shell

5、节点间流量以AES-256(CBC模式)进行加密

工具下载

广大研究人员可以使用下列命令直接将项目源码克隆至本地:

git clone https://github.com/ph4ntonn/Stowaway.git

工具使用

Stowaway分别由管理端和代理端两个部分组成,并且集成在一个程序中,研究人员可以通过不同的参数来进行控制。如果你不想重新编译源码的话,也可以直接使用本项目Release页面提供的已编译完成的程序文件。

简单样例:

admin mode:./stowaway admin -l 9999 -s 123

命令解析:

admin表示以管理模式启动

-l 参数即为监听端口

-s 参数即为表节点通信加密密钥(管理端与代理端必须一致!)

目前该工具仅支持这两个参数!

agent mode: ./stowaway agent -m 127.0.0.1:9999 -l 10000 --startnode -s 123 -r

命令解析:

agent表示以agent端模式启动

-m 表示上一级节点的地址

-l 表示监听端口

-s 参数表示节点通信加密密钥(管理端与代理端必须一致!)

–startnode 表示此节点是管理端的第一个节点(第一个节点必须加上–startnode选项!若无–startnode表示为普通节点,命令与startnode一致)

-r 表示以反向模式启动(即下级节点需要本节点主动连接而不是等待下级节点主动连接到本节点,若正向连接可以去除此选项)

目前该工具仅支持这这五个参数!

使用样例

下面给大家提供一个该工具的使用样例,该例子为一个管理端,三个代理端:

管理端:

Stowaway:一款专为渗透测试人员设计的多级代理工具

起始节点:

Stowaway:一款专为渗透测试人员设计的多级代理工具

第一个普通节点(设置为反向连接模式):

Stowaway:一款专为渗透测试人员设计的多级代理工具

此时,切换到该节点的上级节点,即起始节点,使用下列命令即可将这个反向模式节点加入网络:

connect 127.0.0.1:10001

第二个普通节点:

Stowaway:一款专为渗透测试人员设计的多级代理工具

成功接入后,即可在管理端查看节点:

Stowaway:一款专为渗透测试人员设计的多级代理工具

此时,我们可以在管理端控制第二个普通节点:

Stowaway:一款专为渗透测试人员设计的多级代理工具

接下来,打开远程Shell:

Stowaway:一款专为渗透测试人员设计的多级代理工具此时,我们就可以在管理端控制第二个普通节点的Shell了。接下来,打开Socks5代理:

Stowaway:一款专为渗透测试人员设计的多级代理工具

用户可以将管理端的7777号端口作为Socks5的代理端口,然后把流量代理到第二个普通节点中,如果你想关闭Socks服务的话,可以直接在节点模式下输入stopsocks,这样就可以关闭与此节点相关的Socks代理服务了。

打开SSH:

Stowaway:一款专为渗透测试人员设计的多级代理工具

这样一来,我们就可以在管理端将SSH流量代理至第二个普通节点,并由第二个普通节点来访问指定的SSH服务了。

项目地址

Stowaway:【传送门

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

本文来源于互联网:Stowaway:一款专为渗透测试人员设计的多级代理工具

如何使用XposedOrNot来判断自己的密码是否泄露

XposedOrNot

XposedOrNot(XoN)这款工具可以搜索一个由约8.5亿个实时密码组成的xposed密码聚合存储库,而网络攻击这可以使用这种泄露的密码来对用户的个人账户产生威胁,因此广大用户可以使用这个密码库来判断自己的账户安全情况。

工具运行截图

如何使用XposedOrNot来判断自己的密码是否泄露

Xposed密码是什么?

这个项目的主要目的是给公众提供一个免费的平台,帮助广大用户检查自己的密码是否暴露和泄露。这个大规模的密码聚合存储库,是由研究人员从世界各地各种数据泄露事件中收集到的,是真实密码的累积。其中,也有很多密码是利用漏洞获取到的,例如Collection#1和Yahoo等。此外,很多密码通常也会在pastebin.com的“剪切板”中泄露出来,我们已经获取到了超过40000次这样的密码泄露了,并且又一次将这些数据添加到了这个庞大的密码聚合存储库中。

整理后的密码用高度安全的散列算法SHA-3(Keccak-512)进行散列运算,并以单向散列存储以供验证。我们的博文中没有明文存储的密码,匿名检查的过程也有详细说明,免费提供的这8.5亿个密码,只为增强网络安全态势。

工具安装

git clone https://github.com/Viralmaniar/XposedOrNot.git

cd XposedOrNot

pip install -r requirements.txt

python XposedorNot.py

如何解析输出?

工具的输出结果由JSON格式数据组成,给出的是JSON输出而不是YES或NO的主要原因是为了确保广大用户可以进一步使用这些数据来开发和改进聚集在这里的大量实时公开的密码。

第一个元素“anon”被添加到存储在XoN中的所有密码散列中,以方便关注隐私的用户进行搜索。第二个元素“char”是一个密码特性列表,它可以进一步用于理解密码的强度,从而知道这是否能满足应用程序的需要,因为许多网站都有根据字符数、字母、数字和特殊字符的混合密码选择策略。

下表用简单的术语详细说明了这些特性:

密码元素 描述
数字 数字的数量
字母 字母的数量
特殊字符 特殊字符的数量
长度 密码长度

最后一个“count”表示在收集的exposed数据泄露中观察到该密码的次数。

另外,还需要注意的一点是,我们使用了Keccak-512散列在XoN中搜索和存储数据。像MD5和SHA1这样的传统散列算法目前已经被弃用了,而且考虑到公开的记录数量巨大,因此这里使用Keccak-512散列算法。

但是,Keccak-512的长度为128个字符,它将占用更多的存储空间。

下面给出的是两个Keccak-512哈希:

test - 1e2e9fc2002b002d75198b7503210c05a1baac4560916a3c6d93bcce3a50d7f00fd395bf1647b9abb8d1afcc9c76c289b0c9383ba386a956da4b38934417789e pass - adf34f3e63a8e0bd2938f3e09ddc161125a031c3c86d06ec59574a5c723e7fdbe04c2c15d9171e05e90a9c822936185f12b9d7384b2bedb02e75c4c5fe89e4d4

如果没有发现匹配的密码,则输出结果如下:

{

  "Error": "Not found"

}

密码收集时间轴

如何使用XposedOrNot来判断自己的密码是否泄露如何使用XposedOrNot来判断自己的密码是否泄露如何使用XposedOrNot来判断自己的密码是否泄露如何使用XposedOrNot来判断自己的密码是否泄露如何使用XposedOrNot来判断自己的密码是否泄露

详细列表可以点击【这里】获取。

许可证协议

本项目的开发和发布遵循Creative Commons Attribution 4.0国际许可证

项目地址

XposedOrNot:【GitHub传送门

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

本文来源于互联网:如何使用XposedOrNot来判断自己的密码是否泄露

Openvas配置slave的debug之路

作为安全行业从业者,一定会有一款适合自己的扫描器,在众多开源扫描器中,相信有很多人会选择openvas,绿骨头组织的这款产品因其性能卓越,扩展性强,接入点、接入方式灵活等众多优点,至今已经成为了企业的安全解决方案之一。 

这款扫描器有一个非常优秀的功能点,即以GMP协议为支撑,平台支持灵活任务下发。因此这个功能是一定要尝试的,试想当你想对一批目标进行定时扫描或者常规扫描时,你只需要简单的配置,通过web界面或者cli脚本,将任务下发给你的scanner-slave集群,然后坐等收集扫描结果,是不是很爽!

笔者最近在配置openvas的主从服务器时,遇到了一些BUG甚是头疼,磕了很久终于解决,于是记录下来,以防有同道中人掉坑里。

名词扫盲

在配置扫描器的时候,海量的教程,海量的词汇经常让我头晕晕的,比如Openvasmd、gvmd、openvassd、gasd、OMP、GMP等等,首先我们来过一遍这些名词。第三列的重要指数是笔者综合在学习OpenVas的过程中碰到的频率,重要性,困扰性给的一个参考值。

名称 功能 重要指数
gvmd GVM10自带的守护进程 10
openvasmd GVM9及之前的守护进程的叫法 10
openvassd GVM的扫描器进程,作用就是进行漏洞扫描,并将结果反馈给管理模块。 10
OSPd 多个扫描器之间使用OSP协议进行通信,而OSPd就是通信进程。 3
GOS 全称Greenbone Operating System。GSM设备的操作系统。提供商业版本,具有企业支持功能的GVM框架。 4
GSM 全称Greenbone Security Manager,绿骨公司系列产品之一,常以应用程序或虚拟机形式出现。 8
GMP 全称Greenbone Management Protocol,听名字就知道是管理协议,gvmd和openvasmd使用该协议、基于XML与其他模块进行通信,以前叫OMP。 8
OSP 全称Open Scanner Protocol,多种绿骨公司产品之间用于通信的协议 5
GVM 全称Greenbone Vulnerability Manager,这是许多服务的一个框架,作为一个商业产品也是组成GSM的一部分,以前直接叫openvas。 10
GVM9 GVM9代版本,也叫OpenVas9,用在GOS 4代系列。 10
GVM10 GVM10代版本,用在GOS 5代系列。 10
GSE 全称Greenbone Source Edition,绿骨应用栈,支撑漏洞扫描,漏洞管理,GVM等,用以支持第三方调用,比如Linux的某个分支提供GVM,但它是以GSE为基础构建的。 3

配置slave-scanner的方法

不论是跟GMP还是OSP server通信,首先需要选择一种主从服务器间的通信方法:

TLS

TLS连接类型是GOS 3.1及更高版本中用于通信的默认连接类型,也是笔者要重点介绍的配置方法.笔者的测试环境为centos7,具体版本见2.3,一台slave和一台master,且防火墙关闭(方便测试)

Master配置

第一步:登录到GSA上,进入 Configuration-> Credentials

Openvas配置slave的debug之路

Openvas配置slave的debug之路

第二步:进入Configuration-> Scanner,Type一定要选GMP Scanner.Credential选刚刚创建的test.

Openvas配置slave的debug之路

第三步:创建任务

Openvas配置slave的debug之路

第四步:配置证书,重中之重

任务创建之后需要在master上给相应的scanner配置slave的cacert.pemslave上cert默认路径在/var/lib/gvm/CA/cacert.pem此处需要把slave上的cacert.pem复制到master上.

此处配置证书需要在master机器上,并以命令行方式进行

gvmd --get-scanners                   //查找test的uuid
gvmd --modify-scanner="test-uuid" --scanner-ca-pub=/path/to/slave/cacert.pem

此处配置完成master后,最好重启一下gvmd以及gsad.原因后面会说.接下来配置Slave.

Slave配置

第一步,创建一个非admin的账号

gvmd --create-user=test --new-password=test --role=Admin

第二步:保证gvmd监听在TCP-port上,而不是Unix socket,这一步笔者在实验的时候错了许多次,总结出几个要注意的点.首先执行:

service gvmd stop
service gsad stop

其次执行:

gvmd --listen=0.0.0.0 --port=9391
gsad --mlisten=0.0.0.0 --mport=9391

确保gsad正常运行的前提下,gvmd监听9391端口:

netstat -anop | grep  gvmd
tcp        0      0 0.0.0.0:9391            0.0.0.0:*               LISTEN      13034/gvmd: Waiting  off (0.00/0/0)

期间打开log,跟进报错:

tail -f /var/log/gvm/gvmd.log

启动task

点击启动task,此处可能会遇到如下几个问题:

问题一:

failed to connect xxxx port 9391.

解决方案:确保slave上的9391端口开放,确保防火墙能通过.

问题二:

(master)slave_connect failed  | (slave)read_from_client_tls

该问题广泛出现在Greenbone 开源社区,github issue,同样的配置不见得能解决同样的问题,因此笔者进行了深入的分析和研究。

tail -f /var/log/gvm/gvmd-master:
md manage:WARNING:slave_connect: failed to open connection to XXXX on 9391
lib  serv:WARNING:gvm_server_verify: the certificate is not trusted
lib  serv:WARNING:gvm_server_verify: the certificate hasn't got a known issuer
tail -f /var/log/gvm/gvm-slave:
md   main:read_from_client_tls: failed to read from client: The TLS connection was non-properly terminated.

1.笔者首先抓了master上的包,发现有向slave的9391端口发的包, slave的9391端口也有返回包,排除了网络不可达的问题.

2.端口可以通信,那会不会是证书选错了?笔者通过查阅各种资料,确保cacert没有搞错,路径没有搞错

3.端口正常,证书正确,配置正确?经历一天的排除+尝试,一遍遍确认自己配置是正确的前提下,笔者终于找到了找到了一个可能的原因,即当执行下列命令之后

gvmd  --modify-scanner="uuid" --scanner-ca-pub=/path/to/cacert.pem

gvmd并不能立即加载该证书,并且即使按照上面步骤执行也会重复出现上述报错.如果没有加载证书,配置再正确,报错都一样,分析都是白搭。

因此需要在配置完证书之后,重启一下gvmd使其加载证书,才能加载正确配置。

重启task即可在两边的log中发现如下log,且GSA上也终于从requested变成了running.欣喜地发现进度为1%.

Status of task test6  has changed to Running

ssh

从GOS 4开始,SSH是默认的连接类型,可通过GVM建立管理守护进程之间的连接。 GMP协议通过SSH隧道传输并转发到gvmd / openvasmd,目前笔者还没有测试过.

Unix Domain Socket

Unix Domain Socket是Greenbone Source Edition中gvmd的默认类型。 但只可以使用在与进程相同的主机上运行client-tools时。

gvmd/openvasmd提供的Unix Domain Socket的从GVM 9中的openvasmd.sock更改为GVM 10中的gvmd.sock。

在GOS 4代里sock路径一般为/run/openvas/openvasmd.sock.

在GOS 5代里sock路径一般为/run/gvm/gvmd.sock.

基于OSPd的扫描器也可以通过Unix Domain Socket访问。

举个例子,笔者的实验环境为:

rpm -qa | grep gvm  
rpm -qa | grep openvas 
gvmd-8.0.0-6928.el7.art.x86_64
gvm-libs-10.0.0-6924.el7.art.x86_64
openvas-scanner-6.0.0-6930.el7.art.x86_64
openvas-smb-1.0.5-6923.el7.art.x86_64

默认启动的gvmd使用的是Unix Domain Socket,验证如下:

netstat -ano |grep gvmd
unix  2      [ ACC ]     STREAM     LISTENING     25846    /var/run/gvmd.sock

总结

1.官方文档永远是最好的教程,其次是开源社区.

2.Debug时要有自己的主线+思考,不是盲目地遇到 一个问题就去查,别人的前置环境和自己的不一样会让自己掉进去,越陷越深,这样问题就会发散。

3.心平气和,万不得已之时,重启大法好!

附一份官方参考文档:https://readthedocs.org/projects/gvm-tools/downloads/pdf/latest/

*本文原创作者:LittleT1ger,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文来源于互联网:Openvas配置slave的debug之路

SysWhispers:如何通过直接系统调用实现AVEDR绕过

SysWhispers:如何通过直接系统调用实现AVEDR绕过

SysWhispers

SysWhispers能够生成Header文件和ASM文件,并通过发送直接系统调用来绕过反病毒以及终端防护响应工具。该工具支持Windows XP至Windows 10的所有系统核心调用,生成的样本文件可以直接从“example-output/”目录获取。

工具介绍

很多安全产品都会在用户模式API下设置钩子,这样就可以帮助它们将目标程序的执行流重定向至它们的引擎中,并检测可疑的行为。Ntdll.dll中的函数可以通过少量汇编指令来发送系统调用,因此在我们的植入程序中重新实现这种操作,就可以帮助我们绕过这些安全产品所设置的钩子了。

SysWhispers可以帮助红队研究人员针对内核镜像(ntoskrnl.exe)发送的任意系统调用生成对应的Header/ASM键值对,支持的操作系统平台包括Windows XP至Windows 10,而且这些Header还包含必要的类型定义。接下来,我们一起看一看如何安装和使用这款功能强大的AV/EDR绕过工具吧!

工具安装

> git clone https://github.com/jthuraisamy/SysWhispers.git
> cd SysWhispers
> pip3 install -r .requirements.txt
> py .syswhispers.py --help

工具使用及样例

命令行

导出所有Windows版本支持的全部功能:

py .syswhispers.py --preset all -o syscalls_all

仅导出Windows 7、8和10支持的常用功能:

py .syswhispers.py --preset common -o syscalls_common

导出NtProtectVirtualMemory和NtWriteVirtualMemory函数:

py .syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem

导出Windows 7、8和10所有支持的函数及功能:

py .syswhispers.py --versions 7,8,10 -o syscalls_78X

脚本输出

PS C:ProjectsSysWhispers> py .syswhispers.py --preset common --out-file syscom

  ,         ,       ,_ /_   .  ,   ,_    _   ,_   ,
_/_)__(_/__/_)__/_/_/ / (__/__/_)__/_)__(/__/ (__/_)__
      _/_                         /
     (/                          /   @Jackson_T, 2019

SysWhispers: Why call the kernel when you can whisper?

Common functions selected.

Complete! Files written to:
        syscom.asm
        syscom.h

经典的CreateRemoteThread DLL注入实例

py .syswhispers.py -f NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx -o syscalls
#include <Windows.h>

void InjectDll(const HANDLE hProcess, const char* dllPath)
{
    LPVOID lpBaseAddress = VirtualAllocEx(hProcess, NULL, strlen(dllPath), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
	
    WriteProcessMemory(hProcess, lpBaseAddress, dllPath, strlen(dllPath), nullptr);
    CreateRemoteThread(hProcess, nullptr, 0, (LPTHREAD_START_ROUTINE)lpStartAddress, lpBaseAddress, 0, nullptr);
}

常用功能

使用下列函数及方法并配合“–preset common”参数,可以创建一个Header/ASM键值对:

NtCreateProcess (CreateProcess)

NtCreateThreadEx (CreateRemoteThread)

NtOpenProcess (OpenProcess)

NtOpenThread (OpenThread)

NtSuspendProcess

NtSuspendThread (SuspendThread)

NtResumeProcess

NtResumeThread (ResumeThread)

NtGetContextThread (GetThreadContext)

NtSetContextThread (SetThreadContext)

NtClose (CloseHandle)

NtReadVirtualMemory (ReadProcessMemory)

NtWriteVirtualMemory (WriteProcessMemory)

NtAllocateVirtualMemory (VirtualAllocEx)

NtProtectVirtualMemory (VirtualProtectEx)

NtFreeVirtualMemory (VirtualFreeEx)

NtQuerySystemInformation (GetSystemInfo)

NtQueryDirectoryFile

NtQueryInformationFile

NtQueryInformationProcess

NtQueryInformationThread

NtCreateSection (CreateFileMapping)

NtOpenSection

NtMapViewOfSection

NtUnmapViewOfSection

NtAdjustPrivilegesToken (AdjustTokenPrivileges)

NtDeviceIoControlFile (DeviceIoControl)

NtQueueApcThread (QueueUserAPC)

NtWaitForMultipleObjects (WaitForMultipleObjectsEx)

导入至Visual Studio

1、将生成的Header/ASM文件拷贝至项目目录;

2、在Visual Studio中,点击Project→Build Customizations…,然后启用MASM;

3、在Solution Explorer中,添加.h和.asm文件至项目中,作为对应的Header和源文件引用;

4、进入ASM文件的属性页中,设置Item类型为Microsoft Macro Assembler;

5、确保项目平台设置为x64,目前该项目不支持32位平台;

工具限制

1、目前仅支持在64位的Windows操作系统;

2、目前不支持来自图形子系统(win32k.sys)的系统调用;

3、工具仅在Windows 10 SDK的Visual Studio 2019(v142)中进行过测试;

项目地址

SysWhispers:【GitHub传送门

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

本文来源于互联网:SysWhispers:如何通过直接系统调用实现AVEDR绕过

安全基线检查平台

0×01 介绍

最近在做安全基线检查相关的,网上有一些代码比较零散;也有一些比较完整的项目,比如owasp中的安全基线检查项目,但是收费;还有一些开源且完整的,比如lynis,但是不符合我的要求。

我的要求如下:

能够对操作系统、中间件和数据库进行基线检查

脚本在系统上进行基线检查后的结果或者收集到的数据能够传输到一个服务端

服务端要做可视化展示

最终的效果是什么呢?最好能够达到阿里云里的安全基线检查的样子,差一点的话也没关系啦。本篇文章是代码中在centos7和win2012系统中将要检查的项目,参考CIS标准而来。客户端基线搜集与检查代码在SecurityBaselineCheck现在完成了Centos和Windows2012基线检查的编写,脚本(简称agent)只在要检查的服务器上运行并显示检查结果。之后会将检查的结果以json串的形式上传到基于django搭建的后端上,后端可视化图形界面代码在 AssetManage,AssetManage也生成了docker镜像,存放在AssetManage docker镜像.

0×02 相关技术

Agent用到的技术:

Shell脚本

Powershell脚本

后端服务器用到的技术:

python3

django2.2

bootstrap

html

存储所用:

sqlite3 3.30

0×03 项目效果

Linux Agent:

安全基线检查平台

Windows Agent:

安全基线检查平台

后端展示效果:

安全基线检查平台

安全基线检查平台

0×04 使用步骤

1. 下载AssetManage这个后端展示项目,

源码地址位于:AssetManage

docker镜像位于:docker in aliyun

# 一、使用源码安装后端 

# 提前安装最新版SQLite3.30,python3.6 

# git clone项目 

# author: JC0o0l 

# wechat: 信安札记 

git clone https://github.com/chroblert/assetmanage.git 

cd AssetManage 

# 使用python3安装依赖包 

python3 -m pip install -r requirements 

python3 manage.py makemigrations 

python3 manage.py migrate 

python3 manage.py runserver 0.0.0.0:8888 

# 假定该服务器的IP未112.112.112.112 

# 二、使用docker进行部署 

# 1. 某服务器(假定IP为112.112.112.112),安装docker 

# 2. docker pull registry.cn-hangzhou.aliyuncs.com/jc0o0l/assetmanage:2.0 

# 3. docker images 查看记住刚刚pull下来的image id 

# 4. docker run -it -p 8888:8888 <ImageID> /bin/bash 

# 5. cd assetManageAssetManage 

# 6. python3 manage.py runserver 0.0.0.0:8888 

# 7. 退出而不停止容器 按CTRL+P+Q

2. 更改agent中后端服务器的ip和端口为上一步中服务器的IP112.112.112.112和端口8888

对于Windows:

安全基线检查平台

对于Linux:

安全基线检查平台

3. 将Agent拖到要进行基线检查的服务器上,以管理员权限运行agent

4. 访问后端服务器可视化展示界面:[http://112.112.112.112:8888](http://112.112.112.112:8888),

点击基线检查,查看扫描记录

安全基线检查平台

点击Click Me查看检查结果

安全基线检查平台

该页面会显示进行检查的每一项的扫描结果与检查结果,并根据相应计算得出相应的分数。

0×05 总结

这个项目可以只将agent放在要进行检查的目标服务器上运行,并且以红色字体显示出不和基线规范的条目;如果要上传的话,需要先运行后端服务器,然后修改agent脚本中后面服务器的ip和端口号。这个项目目前可以针对Linux和Windows的部分操作系统进行基线检查,不适用于全部系统。

基线检查比较容易,只需要根据规范收集信息进行比较即可,而系统加固涉及的面就比较多了,不同的环境有不同的配置,系统加固一不小心就容易对系统环境造成损坏,所以这个项目不准备添加系统加固的功能

该项目的详细地址:

agent: https://github.com/chroblert/securitybaselinecheck 

后端:https://github.com/chroblert/assetmanage

*本文作者:jerrybird,转载请注明来自FreeBuf.COM

本文来源于互联网:安全基线检查平台

Stowaway:安全工作者的多级代理工具

写在前面:

此工具是因为看到了Dliv3师傅的Venom工具后,想着自己也写一个属于自己的多级代理工具,故而利用闲暇时间编写的(是的,我又在重复造轮子), 在此感谢Dliv3师傅 XD。

废话不多说,我把我的README先搬过来给大家瞅瞅

Stowaway是一个利用go语言编写的多级代理工具用户可使用此程序将外部流量通过多个节点代理至内网,并实现管理功能

此工具仅限于安全研究和教学,用户承担因使用此工具而导致的所有法律和相关责任! 作者不承担任何法律和相关责任!

特性

1、一目了然的节点管理

2、多平台适配

3、正向/反向连接

4、多级socks5流量代理转发

5、ssh代理连接

6、远程交互式shell

7、上传及下载文件

8、节点间流量以AES-256(CBC模式)进行加密

Usage

Stowaway分为admin端和agent端两种形式

不想编译的盆油可以直接用release下编译完成的程序

第一种情况:

Admin端监听,等待startnode连接:./stowaway admin -l 9999 -s 123

 命令解析:

 admin代表以admin模式启动

 -l 参数代表监听端口 

 -s 参数代表节点通信加密密钥(admin端与agent端必须一致!)

startnode端: ./stowaway agent -m 127.0.0.1:9999 -l 10000 –startnode -s 123 –reconnect 5

 命令解析:

    agent代表以agent端模式启动

    -m 代表上一级节点的地址

    -l 代表监听端口

   -s 参数代表节点通信加密密钥(admin端与agent端必须一致!)

   –startnode 代表此节点是agent端的第一个节点(第一个节点必须加上–startnode选项!若无–startnode表示为普通节点,命令与startnode一致)

  –reconnect 代表startnode将在admin下线后主动尝试不断重连(此例子中为每5秒重连一次)注意:若需要重连功能,只需要在startnode使用此参数即可,其后节点无需此参数,正常启动即可

此时若后续的节点希望以passive模式启动(即本节点等待上一级节点的主动连接,而不是主动连接上一节点)

那么,上述命令可改为 ./stowaway agent -m 127.0.0.1:9999 –startnode -s 123 –reconnect 5

后续节点启动命令为:./stowaway agent -l 10001 -s 123 -r

  -r 代表以passive模式启动(即本节点等待上一级节点的主动连接,而不是主动连接上一节点,若正向连接可以去除此选项)

此时在admin端进入startnode(use 1),使用connect命令(connect 127.0.0.1:10001)即可将后续节点加入网络

若后续节点希望以active模式启动(即本节点主动连接上一级节点)

那么,startnode启动命令可以保持不变

后续节点启动命令为:./stowaway agent -m 127.0.0.1:10000 -l 10001 -s 123

此时即可将后续节点加入网络

   第二种情况

Admin端主动连接startnode端:./stowaway admin -s 123 -c 127.0.0.1:9999
命令解析: 

 admin代表以admin模式启动

  -s 同上

  -c 代表startnode所在的地址

此时startnode端: ./stowaway agent -l 9999 -s 123 –startnode –reconnect 0 -r –single

  命令解析:

  agent代表以agent模式启动

  -l,-s ,–startnode同上

  –reconnect:当statnode端以passive模式启动时,请将此值设置为0(active模式下,此值为每隔x秒尝试重连)

  -r/–reverse:代表以passive模式启动

  –single:当设置此选项时,代表整个网络只有admin和startnode两个节点(即没有后续节点),若不设置此选项,代表后续还有节点

后续节点同第一种情况启动即可

此时,若未设置–single选项,则先后启动startnode端及admin端,将后续节点加入网络后,admin就可以选择下线(或者保持在线)

下一次想要重连时,再次执行./stowaway admin -s 123 -c 127.0.0.1:9999,即可重建网络

若设置了–single选项,则先后启动startnode端及admin端,admin就可以选择下线(或者保持在线)

下一次想要重连时,再次执行./stowaway admin -s 123 -c 127.0.0.1:9999,即可重建网络

Example

一个简单的例子(以一个admin端三个agent端为例):

Admin端:Stowaway:安全工作者的多级代理工具Startnode端:Stowaway:安全工作者的多级代理工具第一个普通Node(设置为反向连接模式):Stowaway:安全工作者的多级代理工具此时,进入(use命令,本例中为use 1)此节点的上级节点(即startnode),利用命令connect 127.0.0.1:10001 即可将此反向模式节点加入网络

第二个普通Node:Stowaway:安全工作者的多级代理工具连入完成后,admin端查看节点:Stowaway:安全工作者的多级代理工具此时在admin端操控第二个普通node节点:Stowaway:安全工作者的多级代理工具打开远程shell: Stowaway:安全工作者的多级代理工具此时就可以在admin端操纵第二个普通节点的shell

打开socks5代理:Stowaway:安全工作者的多级代理工具此时用户即可以将admin端的7777端口作为socks5代理端口,将流量代理至第二个普通node节点(当想关闭socks服务时,在节点模式下输入stopsocks即可关闭与此节点相关的socks代理服务)

打开ssh:Stowaway:安全工作者的多级代理工具此时第二个普通节点会作为ssh客户端,(此节点)会发起ssh连接来访问指定的ssh服务,并将ssh数据回传至admin端

PS: 在ssh模式下,你可以用pwd来判断自己所处的文件夹(好吧,其实就是没法把banner传回来。。)

上传/下载文件:Stowaway:安全工作者的多级代理工具Stowaway:安全工作者的多级代理工具上传下载功能命令为 upload/download 后加文件路径(注意要在节点模式下使用),此时就可以上传文件至指定节点/下载指定节点的文件

具体命令使用可输入help查询

TODO

[x] 节点间通信流量加密 

[x] 关闭代理与端口转发

[ ] 重连功能

[ ] 清理代码,优化逻辑

[ ] 增加cc功能

[x] 节点反向连接

[ ] 支持端口复用

注意事项:

1. 此程序仅是闲暇时开发学习,结构及代码结构不够严谨,功能可能存在bug,请多多谅解

2. 当admin端掉线,所有后续连接的agent端都会退出(当startnode未开启重连模式(主动或者被动)时)

3. 当多个agent端中有一个掉线,后续的agent端都会掉线

4. 在admin启动后,必须有节点连入才可操作

5. 如需从源代码编译本项目,请运行build_admin.sh/build_agent.sh文件来编译对应类型的Stowaway(注意!!!!!!默认编译的是agent模式,此时请运行build_agent.sh,如需编译admin,请查看main.go文件中的提示,按照提示进行操作后,运行build_admin.sh文件)

写在最后:

本人仅是安全爱好者(别问,问就是菜鸡),*山代码生产者,代码框架不够严谨(相信有不少bug,同时也写的不够优雅),仅是练习,也是希望与大家一起进步,大佬们勿喷 XD     

最后的最后,切勿在未授权的情况下使用此工具,网络安全法大家可以了解一下

*本文作者:Phantom11235,转载请注明来自FreeBuf.COM

本文来源于互联网:Stowaway:安全工作者的多级代理工具

Scallion:一款基于GPU的Onion哈希生成器

Scallion:一款基于GPU的Onion哈希生成器

Scallion

Scallion可以帮助我们使用OpenCL来创建GPG密钥以及针对Tor隐藏服务的.onion地址。Scallion基于Mono软件平台开发和运行,并已在Arch Linux平台上成功测试,工具的运行依赖.NET 3.5+(已在Windows 7和Windows Server 2008平台上测试)。

Scallion当前仍处于测试阶段,正在积极开发中,但是它目前已经可以正常使用了。我们的开发当前主要集中在性能、用户界面和安装难度方面的改进上,而不是在生成密钥以及相关算法方面。

工具依赖

1、安装并配置好OpenCL以及相关驱动器。

2、OpenSSL,在Windows环境下,已包含有预内置的x64 DLL。

3、尽在Windows平台下,需要VC++ Redistributable 2008

工具下载

最新版本源码压缩包:【点我下载

Linux环境下构建

依赖组件

针对自己的Linux发行版,获取最新版本的Mono:【传送门

使用下列命令安装常用依赖组件:

sudo apt-get update

sudo apt-get install libssl-dev mono-devel

AMD/OpenSource构建命令:

sudo apt-get install ocl-icd-opencl-dev

Nvidia构建命令:

sudo apt-get install nvidia-opencl-dev nvidia-opencl-icd

最后,运行下列命令:

msbuild scallion.sln

Docker Linux配置(Nvidia GPU)

1、获取nvidia-docker容器运行时环境:【点我获取】。

2、运行下列命令构建容器:

docker build -t scallion -f Dockerfile.nvidia

3、运行下列命令:

docker run --runtime=nvidia -ti --rm scallion -l

Windows环境下构建

1、在VS中打开“scallion.sln”

2、构建解决方案

工具使用

枚举设备:

$ mono scallion/bin/Debug/scallion.exe -l

生成哈希:

$ mono scallion/bin/Debug/scallion.exe -d 0 prefix

Cooking up some delicious scallions...

Using kernel optimized from file kernel.cl (Optimized4)

Using work group size 128

Compiling kernel... done.

Testing SHA1 hash...

CPU SHA-1: d3486ae9136e7856bc42212385ea797094475802

GPU SHA-1: d3486ae9136e7856bc42212385ea797094475802

Looks good!

LoopIteration:40  HashCount:671.09MH  Speed:9.5MH/s  Runtime:00:01:10  Predicted:00:00:56  Found new key! Found 1 unique keys.

<XmlMatchOutput>

  <GeneratedDate>2014-08-05T07:14:50.329955Z</GeneratedDate>

  <Hash>prefix64kxpwmzdz.onion</Hash>

  <PrivateKey>-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCmYmTnwGOCpsPOqvs5mZQbIM1TTqOHK1r6zGvpk61ZaT7z2BCE

FPvdTdkZ4tQ3/95ufjhPx7EVDjeJ/JUbT0QAW/YflzUfFJuBli0J2eUJzhhiHpC/

1d3rb6Uhnwvv3xSnfG8m7LeI/Ao3FLtyZFgGZPwsw3BZYyJn3sD1mJIJrQIEB/ZP

ZwKBgCTUQTR4zcz65zSOfo95l3YetVhfmApYcQQd8HTxgTqEsjr00XzW799ioIWt

vaKMCtJlkWLz4N1EqflOH3WnXsEkNA5AVFe1FTirijuaH7e46fuaPJWhaSq1qERT

eQT1jY2jytnsJT0VR7e2F83FKINjLeccnkkiVknsjrOPrzkXAkEA0Ky+vQdEj64e

iP4Rxc1NreB7oKor40+w7XSA0hyLA3JQjaHcseg/bqYxPZ5J4JkCNmjavGdM1v6E

OsVVaMWQ7QJBAMweWSWtLp6rVOvTcjZg+l5+D2NH+KbhHbNLBcSDIvHNmD9RzGM1

Xvt+rR0FA0wUDelcdJt0R29v2t19k2IBA8ECQFMDRoOQ+GBSoDUs7PUWdcXtM7Nt

QW350QEJ1hBJkG2SqyNJuepH4PIktjfytgcwQi9w7iFafyxcAAEYgj4HZw8CQAUI

3xXEA2yZf9/wYax6/Gm67cpKc3sgKVczFxsHhzEml6hi5u0FG7aNs7jQTRMW0aVF

P8Ecx3l7iZ6TeakqGhcCQGdhCaEb7bybAmwQ520omqfHWSte2Wyh+sWZXNy49EBg

d1mBig/w54sOBCUHjfkO9gyiANP/uBbR6k/bnmF4dMc=

-----END RSA PRIVATE KEY-----

</PrivateKey>

  <PublicModulusBytes>pmJk58BjgqbDzqr7OZmUGyDNU06jhyta+sxr6ZOtWWk+89gQhBT73U3ZGeLUN//ebn44T8exFQ43ifyVG09EAFv2H5c1HxSbgZYtCdnlCc4YYh6Qv9Xd62+lIZ8L798Up3xvJuy3iPwKNxS7cmRYBmT8LMNwWWMiZ97A9ZiSCa0=</PublicModulusBytes>

  <PublicExponentBytes>B/ZPZw==</PublicExponentBytes>

</XmlMatchOutput>

init: 491ms / 1 (491ms, 2.04/s)

generate key: 1193ms / 6 (198.83ms, 5.03/s)

cpu precompute: 10ms / 6 (1.67ms, 600/s)

total without init: 70640ms / 1 (70640ms, 0.01/s)

set buffers: 0ms / 40 (0ms, 0/s)

write buffers: 3ms / 40 (0.08ms, 13333.33/s)

read results: 67442ms / 40 (1686.05ms, 0.59/s)

check results: 185ms / 40 (4.63ms, 216.22/s)

9.50 million hashes per second

Stopping the GPU and shutting down...

多模式哈希

Scallion支持通过原语正则表达式语句来搜索单一或多模式哈希,目前仅支持字符类型(例如[absd])。“.”字符代表任意字符,Onion地址长度固定为16个字符,GPG指纹为40个字符。你可以通过“$”来寻找前缀或后缀匹配,例如DEAD$。除此之外,你还可以使用pipe语句(例如pattern1|pattern2)来寻找多模式哈希,当然了,这种搜索模式下运行速度肯定不乐观。

查询样例

mono scallion.exe prefix[234567]

mono scallion.exe -c prefix scallion hashes

mono scallion.exe -c "prefix|scallion|hashes"

mono scallion.exe .........badbeef

mono scallion.exe --gpg badbeef$ # 生成GPG密钥

mono scallion.exe "suffixa$|suffixb$|prefixa|prefixb|a.suffix$|a.test.$"

Scallion工作机制

1、使用OpenSSL以及CPU生成RSA密钥

2、向GPU发送密钥

3、增加密钥的公共指数

4、对密钥进行哈希计算

5、如果生成的哈希非部分冲突,则返回第三步

6、如果生成的密钥未通过PKCS #1 v2.1的及健全性检查,则返回第三步

7、生成全新的密钥

速度/性能

初始的RSA密钥生成是在CPU上完成的,SHA1哈希计算则是在GPU上完成的。下面给出的是常见GPU的计算速度表:

GPU型号 速度
Intel i7-2620M 9.9 MH/s
Intel i5-5200U 118 MH/s
NVIDIA GT 520 38.7 MH/s
NVIDIA Quadro K2000M 90 MH/s
NVIDIA GTS 250 128 MH/s
NVIDIA GTS 450 144 MH/s
NVIDIA GTX 670 480 MH/s
NVIDIA GTX 970 2350 MH/s
NVIDIA GTX 980 3260 MH/s
NVIDIA GTX 1050 (M) 1400 MH/s
NVIDIA GTX 1070 4140 MH/s
NVIDIA GTX 1070 TI 5100 MH/s
NVIDIA GTX TITAN X 4412 MH/s
NVIDIA GTX 1080 5760 MH/s
NVIDIA Tesla V100 11646 MH/s
AMD A8-7600 APU 120 MH/s
AMD Radeon HD5770 520 MH/s
AMD Radeon HD6850 600 MH/s
AMD Radeon RX 460 840 MH/s
AMD Radeon RX 470 957 MH/s
AMD Radeon R9 380X 2058 MH/s
AMD FirePro W9100 2566 MH/s
AMD Radeon RX 480 2700 MH/s
AMD Radeon RX 580 3180 MH/s
AMD Radeon R9 Nano 3325 MH/s
AMD Vega Frontier Edition 7119 MH/s

MH/s = 百万哈希/秒

工具运行截图

Scallion:一款基于GPU的Onion哈希生成器

项目地址

Scallion:【GitHub传送门

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

本文来源于互联网:Scallion:一款基于GPU的Onion哈希生成器