首页 >> 网络安全 >>神兵利器 >> 护网自动化脚本
详细内容

护网自动化脚本

时间:2020-08-25     作者:小鸭子【转载】   来自:雷神众测   阅读

声明


由于传播,利用此文所提供的信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不承担任何责任。

雷神众测拥有该文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的副本,包括版权声明等全部内容。声明雷神众测允许,不得任意修改或增减此文章内容,不得以任何方式将其用于商业目的。

前言

为了护网需要写了这么一个小脚本,此处主要介绍下这个自动化工具的实现思路,以及这个工具的使用方法。

1号

本文主要内容

1,Masscan与NMAP联动

2,扫描结果解析工具

3,几款开源工具目击者,tomcat弱密码扫描器,突破发现,brutespray

NMAP是渗透测试人员广泛使用的老牌开源工具,功能强大,但扫描速度较慢。Masscan号称是世界上速度的扫描器,但功能较单一。很多经验丰富的渗透大佬都会将这两个东西结合在一起使用。

我们在红队前期充分收集目标企业的IP资产后,即可以使用CIDR等IP的表示方法导入扫描器。目前暂不支持目标域名的导入方式有两个原因:

1,DNS信息收集的过程有点慢

2,为了尽量保证精准度,暂时不想加入太多功能

在开始之前先介绍一下Masscan的设置,-rate这个参数代表packets / second每秒发送的数据包,这个和分散没啥关系。

Masscan -p1-65535 10.0.0.0/24 --rate 100000 -oX scan.xml

--rate <每秒数据包数>:指定所需的传输速率

           包。这可以是非常小的数字,例如0.1

           每10秒传输一次数据包

           像10000000这样的大数,它试图以1000万传播

           狮子数据包/秒。以我的经验,Windows最多可以完成250次

           每秒沙包,而最新版本的Linux可以做到2.5

           每秒百万个数据包。需要PF_RING驱动程序才能到达

           每秒2500万个数据包。

那么如何计算出适用适用于自己带宽的--rate设置呢?我算了一下Masscan的扫描一个数据包是68byte:


1.png

Masscan的一个包是68字节,如果我们每秒钟要发送10w /秒,就需要6.48M,68 * 100000/1024/1024 = 6.48M以上的带宽。通常windows每秒能发25W /秒,linux250W /秒。PF_RING可以达到2500W /秒。我在脚本中使用的是--rate 30000,也就是需要1M的带宽。

下面说说VPS的相关选择,在国内的阿里云/腾讯云虽然足够,但是我发现机房使用Masscan等发包太快的工具是会导致丢包的,效果一点不好。而国外的服务器过于拥挤,,通常一般的线路丢包有点严重,但一般目标企业的网络线路都还可以,所以我选择了不限制使用Masscan的国外vps。


2号

Masscan与NMAP联动

BASH脚本:

    sudo masscan -p1-65535 --rate 30000 --open -iL $ TARGET -oX $ NRESULTS_PATH / masscan.xml

    须藤rm $ WORKING_DIR / paused.conf


    open_ports = $(cat $ NRESULTS_PATH / masscan.xml | grep portid | cut -d“ \”“ -f 10 | sort -n | uniq |粘贴-sd,)


    猫$ NRESULTS_PATH / masscan.xml | grep portid | cut -d“ \”“ -f 4 |排序-V | uniq> $ WORKING_DIR / nmap_targets.tmp


    sudo nmap -sVC -p $ open_ports --open -v -Pn -n -T4 -iL $ WORKING_DIR / nmap_targets.tmp -oX $ NRESULTS_PATH / nmap.xml

    须藤rm $ WORKING_DIR / nmap_targets.tmp


    xsltproc -o $ NRESULTS_PATH / nmap-bootstrap.html $ WORKING_DIR / bootstrap-nmap.xsl $ NRESULTS_PATH / nmap.xml

然后使用nmap -p -iL调用端口/ IP。最后使用xsltproc工具,根据bootstrap- nmap.xsl将nmap的扫描结果生成为方便查看/搜索的html格式。

3号

扫描结果解析工具

有了nmap的xml,就可以提取出来里面的信息,进行下一步自动化测试了。在自动化测试之前需要了解一下这个开源的nmap结果解析工具nmap-parse-output:

检查并安装Nmap-parse-output解析工具:

如果[-d“ nmap-parse-output”];那么

        echo -e“ $ {BLUE} [-]已安装最新版本的Nmap-parse-output。正在跳过... $ {RESET}”

    其他

        echo -e“ $ {GREEN} [+]安装nmap-parse-output。$ {RESET}”

        git clone https://github.com/ernw/nmap-parse-output

    科幻

提取http / https的url

nmap-parse-output nmap.xml http端口

2.png

nmap-parse-输出nmap.xml tls-ports | awk'{print“ https://” $ 1}'

3.png


提取服务/产品名称

nmap-parse-output nmap.xml服务名称

4.png

nmap-parse-output nmap.xml产品

5.png


提取所有Tomcat URL

nmap-parse-output nmap.xml搜索产品“ Apache Tomcat”

6.png


提取标题

nmap-parse-output nmap.xml http-title“

7.png

我们把nmap识别出来的http / https的端口,以及所有Apache Tomcat应用程序全部导入到临时文件url.tmp和ip.txt / port.txt中方便下一步的Web自动化测试,再保存http-title,product, service-names方便查看,了解目标信息。


    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml tee url.tmp

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml tls-ports | awk'{print“ https://” $ 1}“ | tee -a url.tmp

    cat url.tmp | sort | uniq> url_list && rm -rf url.tmp

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml服务名称> $ NRESULTS_PATH / service-names.txt

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml产品> $ NRESULTS_PATH / product.txt

    IFS_old = $ IFS; IFS = $'\ n'

    对于$ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml http-title中的行;执行echo -e $ line; done | 发球$ NRESULTS_PATH / http-title.txt

    IFS = $ IFS_old

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml搜索产品“ Apache Tomcat” | awk -F:'{print $ 1}'> tomcat-weak-password-scanner / ip.txt

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml搜索产品“ Apache Tomcat” | awk -F:'{print $ 2}'> tomcat-weak-password-scanner / port.txt

4号

目击者

EyeWitness功能:

1,它的快照可以让我们更直观地识别资产,通过网站类型快速判断网段是否属于目标。

2,更直观的看所使用的到应用是什么。

3,判断是否存在登陆页面,识别常见登陆后台。

4,RDP登陆账户显示。

检查并安装目击者工具:

    如果[-d“ EyeWitness”];那么

        echo -e“ $ {BLUE} [-]已经安装了最新版本的目击者。正在跳过... $ {RESET}”

    其他

        echo -e“ $ {GREEN} [+]安装EyeWitness。$ {RESET}”

        git clone https://github.com/FortyNorthSecurity/EyeWitness && sudo ./EyeWitness/setup/setup.sh

    科幻


    如果[-d“ tomcat-weak-password-scanner”];然后

        echo -e“ $ {BLUE} [-]已经安装了最新版本的tomcat-weak-password-scanner。正在跳过... $ {RESET}”

    其他

        echo -e“ $ {GREEN} [+]安装tomcat-weak-password-scanner。$ {RESET}”

        git clone https://github.com/magicming200/tomcat-weak-password-scanner

    科幻

判断是否存在登录页面,识别网络设备/后台等


8.png

判断高价值目标

9.png

更直观的展示资产

10.png

识别rdp登录用户名

11.png

须藤-i python3 $ WORKING_DIR / EyeWitness / EyeWitness.py -x $ 

NRESULTS_PATH / nmap.xml-无提示-d $ ERESULTS_PATH --no-dns --ocr

12.png


5号

突破检测


1,防御指纹(Weblogic,Shiro,Strust2,Solr等...)

2,CMS识别(Seeyon,通达,泛微,Discuz,DeDeCms等...)

3,服务爆破(MSSQL,SSH,VNC,FTP,TELNET等...)

突破性检测使用的是伟刚写的突破性检测插件,模版如下:

主程序

导入系统

导入线程


从插件导入*

从termcolor导入cprint

从队列导入队列


vul_list = []

web_queue = []


使用open(sys.argv [1],“ r”)作为f:

    对于我在f.readlines()中:

        web_queue.append(i.strip())

    f.close()


对于[shiro,weblogic,struts2,jboss]中的vulClass:

    检测= vulClass.Detect

    尝试:

        alive_Web_queue =队列(-1)

        对于web_queue中的_:

            alive_Web_queue.put(_)


        线程= []

        thread_num = 30

        对于范围(1,thread_num + 1)中的num:

            t =检测(alive_Web_queue,vul_list)

            thread.append(t)

            t.start()

        对于线程中的t:

            t.join()

    例外,例如e:

        print(r'[-]加载Vul [{}]错误:{}'。format(detect.name,e.args))

        继续

插件模版

汇入要求

导入线程

从termcolor导入cprint

从urllib.parse导入urlparse


类Detect(threading.Thread):

    def __init __(self,alive_Web_queue,vul_list):

        threading.Thread .__ init __(自己)

        self.headers = {'User-Agent':'Mozilla / 5.0(Windows NT 10.0; WOW64; rv:46.0)Gecko / 20100101 Firefox / 46.0'}

        self.alive_Web_queue = alive_Web_queue

        self.vul_list = vul_list



    def运行(自己):

        而不是self.alive_Web_queue.empty():

            alive_web = self.alive_Web_queue.get()

            self.run_detect(alive_web)


    定义CVE_2017_10271(self,url):

        weblogic_url = url +'/ wls-wsat / CoordinatorPortType'

        尝试:

            res = requests.get(URL = weblogic_url,标头= self.headers,allow_redirects = False,超时= 10)

            如果res.text中为'CoordinatorPortType?wsdl':

                cprint('[CVE_2017_10271] {}'。format(url),'red')

                self.vul_list.append(['weblogic',url])

            其他:

                print('[-] {}'。format(url))

        例外,例如e:

            通过


    定义CVE_2019_2725(self,url):

        weblogic_url = url +'/ _async / AsyncResponseService'

        尝试:

            res = requests.get(URL = weblogic_url,标头= self.headers,allow_redirects = False,超时= 10)

            如果res.text中的“ AsyncResponseService主页”:

                cprint('[CVE-2019-2725] {}'。format(url),'red')

                self.vul_list.append(['weblogic',url])

            其他:

                print('[-] {}'。format(url))

        例外,例如e:

            通过


    定义CVE_2019_2729(self,url):

        weblogic_url = url +'/ wls-wsat / CoordinatorPortType11'

        尝试:

            res = requests.get(URL = weblogic_url,标头= self.headers,allow_redirects = False,超时= 10)

            如果res.text中为'CoordinatorPortType11?wsdl':

                cprint('[CVE-2019-2729] {}'。format(url),'red')

                self.vul_list.append(['weblogic',url])

            其他:

                print('[-] {}'。format(url))

        例外,例如e:

            通过


    def run_detect(self,url):

        如果不是urlparse(url).scheme:

            url ='https://'+ url

        其他:

            网址=网址


        self.CVE_2017_10271(网址)

        self.CVE_2019_2725(网址)

        self.CVE_2019_2729(网址)

演示效果

13.png

6号

服务爆破


爆破使用的是bruutespray开放式工具,可以直接提取nmap的xml扫描结果,然后进行对应的服务爆破。


14.png

还有tomcat-weak-password-scanner:

15.png

7号

工具使用

#!/ bin / bash


TARGET =“ $ 1”


TIME =`date +“%Y%m%d%H%M”`

WORKING_DIR =“ $(cd” $(dirname“ $ 0”)“; pwd -P)”

NRESULTS_PATH =“ $ WORKING_DIR / $ TIME / nresults”

ERESULTS_PATH =“ $ WORKING_DIR / $ TIME /结果”


RED =“ \ 033 [1; 31m”

GREEN =“ \ 033 [1; 32m”

BLUE =“ \ 033 [1; 36m”

YELLOW =“ \ 033 [1; 33m”

RESET =“ \ 033 [0m”



checkArgs(){

    如果[[$#-eq 0]]; 然后

        echo -e“ \ t $ {RED} [!]错误:$ {RESET}无效的参数!\ n”

        echo -e“ \ t $ {GREEN} [+]用法:$ {RESET} $ 0 ip.txt \ n”

        1号出口

    小精灵[!-s $ 1]; 然后

        echo -e“ \ t $ {RED} [!]错误:$ {RESET}文件为空和/或不存在!\ n”

        echo -e“ \ t $ {GREEN} [+]用法:$ {RESET} $ 0 ip.txt \ n”

        1号出口

    科幻

}



setupTools(){

    echo -e“ $ {GREEN} [+]进行设置。$ {RESET}”

    sudo apt更新-y

    #sudo apt升级-y

    #sudo apt autoremove -y

    #sudo apt clean

    须藤apt install -y gcc g ++ make libpcap-dev xsltproc


    echo -e“ $ {GREEN} [+]创建结果目录。$ {RESET}”

    mkdir -p $ NRESULTS_PATH

}



installTools(){


    LATEST_MASSCAN =“ 1.0.6”

    如果[!-x“ $(command -v masscan)”]; 然后

        echo -e“ $ {GREEN} [+]安装Masscan。$ {RESET}”

        git clone https://github.com/robertdavidgraham/masscan

        CD Masscan

        使-j

        sudo make -j安装

        cd $ WORKING_DIR

        rm -rf masscan

    其他

        如果[“ $ LATEST_MASSCAN” ==“ $(masscan -V | grep” Masscan版本“ | cut -d”“ -f 3)”];然后

            echo -e“ $ {BLUE} [-]已安装最新版本的Masscan。正在跳过... $ {RESET}”

        其他

            echo -e“ $ {GREEN} [+]将Masscan升级到最新版本。$ {RESET}”

            git clone https://github.com/robertdavidgraham/masscan

            CD Masscan

            使-j

            sudo make -j安装

            cd $ WORKING_DIR

            rm -rf masscan *

        科幻

    科幻


    LATEST_NMAP =“ $(wget -qO- https://nmap.org/dist/ | grep -oP'nmap-([0-9 \。] +)\。tar \ .bz2'| tail -n 1 | grep -oP'nmap- [0-9 \。] +'| grep -oP'[0-9 \。] +'| head -c -2)“

    如果[!-x“ $(command -v nmap)”]; 然后

        echo -e“ $ {GREEN} [+]正在安装Nmap。$ {RESET}”

        wget https://nmap.org/dist/nmap-$LATEST_NMAP.tar.bz2

        bzip2 -cd nmap- $ LATEST_NMAP.tar.bz2 | 焦油xvf-

        cd nmap- $ LATEST_NMAP

        。/配置

        使-j

        sudo make -j安装

        cd $ WORKING_DIR

        rm -rf nmap- $ LATEST_NMAP *

    其他 

        如果[“ $ LATEST_NMAP” ==“ $(nmap -V | grep” Nmap版本“ | cut -d”“ -f 3)”];然后

            echo -e“ $ {BLUE} [-]已安装最新版本的Nmap。正在跳过... $ {RESET}”

        其他

            echo -e“ $ {GREEN} [+]将Nmap升级到最新版本。$ {RESET}”

            wget https://nmap.org/dist/nmap-$LATEST_NMAP.tar.bz2

            bzip2 -cd nmap- $ LATEST_NMAP.tar.bz2 | 焦油xvf-

            cd nmap- $ LATEST_NMAP

            。/配置

            使-j

            sudo make -j安装

            cd $ WORKING_DIR

            rm -rf nmap- $ LATEST_NMAP *

        科幻 

    科幻


    如果[-d“ nmap-parse-output”];那么

        echo -e“ $ {BLUE} [-]已安装最新版本的Nmap-parse-output。正在跳过... $ {RESET}”

    其他

        echo -e“ $ {GREEN} [+]安装nmap-parse-output。$ {RESET}”

        git clone https://github.com/ernw/nmap-parse-output

    科幻


    如果[-d“ EyeWitness”];那么

        echo -e“ $ {BLUE} [-]已经安装了最新版本的目击者。正在跳过... $ {RESET}”

    其他

        echo -e“ $ {GREEN} [+]安装EyeWitness。$ {RESET}”

        git clone https://github.com/FortyNorthSecurity/EyeWitness && sudo ./EyeWitness/setup/setup.sh

    科幻


    如果[-d“ tomcat-weak-password-scanner”];然后

        echo -e“ $ {BLUE} [-]已经安装了最新版本的tomcat-weak-password-scanner。正在跳过... $ {RESET}”

    其他

        echo -e“ $ {GREEN} [+]安装tomcat-weak-password-scanner。$ {RESET}”

        git clone https://github.com/magicming200/tomcat-weak-password-scanner

    科幻


}


portScan(){

    echo -e“ $ {GREEN} [+]正在运行Masscan。$ {RESET}”

    sudo masscan -p1-65535 --rate 30000 --open -iL $ TARGET -oX $ NRESULTS_PATH / masscan.xml

    须藤rm $ WORKING_DIR / paused.conf

    xsltproc -o $ NRESULTS_PATH / masscan.html $ WORKING_DIR / bootstrap-masscan.xsl $ RESULTS_PATH / masscan.xml

    open_ports = $(cat $ NRESULTS_PATH / masscan.xml | grep portid | cut -d“ \”“ -f 10 | sort -n | uniq |粘贴-sd,)

    猫$ NRESULTS_PATH / masscan.xml | grep portid | cut -d“ \”“ -f 4 |排序-V | uniq> $ WORKING_DIR / nmap_targets.tmp

    echo -e“ $ {RED} [*] Masscan完成!在$ NRESULTS_PATH $ {RESET}处查看HTML报告”


    echo -e“ $ {GREEN} [+]正在运行Nmap。$ {RESET}”

    sudo nmap -sVC -p $ open_ports --open -v -Pn -n -T4 -iL $ WORKING_DIR / nmap_targets.tmp -oX $ NRESULTS_PATH / nmap.xml

    须藤rm $ WORKING_DIR / nmap_targets.tmp

    xsltproc -o $ NRESULTS_PATH / nmap-bootstrap.html $ WORKING_DIR / bootstrap-nmap.xsl $ NRESULTS_PATH / nmap.xml

    echo -e“ $ {RED} [*] Nmap完成!在$ NRESULTS_PATH $ {RESET}处查看HTML报告”

    echo -e“ $ {RED} [*] Nmap-parse-output完成!$ {RESET}”


    echo -e“ $ {GREEN} [+]运行Nmap-parse-output。$ {RESET}”

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml tee url.tmp

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml tls-ports | awk'{print“ https://” $ 1}“ | tee -a url.tmp

    cat url.tmp | sort | uniq> url_list && rm -rf url.tmp

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml服务名称> $ NRESULTS_PATH / service-names.txt

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml产品> $ NRESULTS_PATH / product.txt

    IFS_old = $ IFS; IFS = $'\ n'

    对于$ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml http-title中的行;执行echo -e $ line; done | 发球$ NRESULTS_PATH / http-title.txt

    IFS = $ IFS_old

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml搜索产品“ Apache Tomcat” | awk -F:'{print $ 1}'> tomcat-weak-password-scanner / ip.txt

    $ WORKING_DIR / nmap-parse-output / nmap-parse-output $ NRESULTS_PATH / nmap.xml搜索产品“ Apache Tomcat” | awk -F:'{print $ 2}'> tomcat-weak-password-scanner / port.txt


}


vulScanner(){

    sudo pip install -r requrement.txt     

    echo -e“ $ {GREEN} [+]正在运行vul-scanner。$ {RESET}”

    python3 $ WORKING_DIR / epfa.py url_list | tee $ NRESULTS_PATH / vul_result.txt

    echo -e“ $ {GREEN} [+]运行目击者。$ {RESET}”

    须藤-i python3 $ WORKING_DIR / EyeWitness / EyeWitness.py -x $ NRESULTS_PATH / nmap.xml-无提示-d $ ERESULTS_PATH --no-dns --ocr

    echo -e“ $ {GREEN} [+]正在运行弱密码扫描程序。$ {RESET}”

    cd $ WORKING_DIR / tomcat-weak-password-scanner / && python koala_tomcat_cmd.py -h ip.txt -p port.txt && cd-

}


checkArgs $ TARGET

setupTools

installTools

端口扫描

vulScanner

8号

使用方法

回显ip> ip.txt 
chmod + x ./recon.sh 
./recon.sh ip.txt



.
更多

1589982338979126.png


ots网络社区

www.ots-sec.cn

猜你喜欢
更多
联系方式
更多

投稿邮箱:1481840992@qq.com

交流群2群:622534175

ots网络社区3群:1078548359

关注我们
更多
技术支持: 建站ABC | 管理登录