Статья Fake AP на Raspberry Pi (Часть 1)

Здравствуй, дорогой читатель!

Предисловие:

В этой статье постараюсь подробно и одновременно кратко описать процесс создания фейковой WiFi-точки для сбора данных на Raspberry Pi. Буду использовать Raspberry Pi 3B+, но процесс создания не будет отличаться на других версиях одноплатника. Также можно использовать любой другой ПК с Linux на базе Debian.

Возможно, у тебя уже появился вопрос: "Зачем вообще эта статья, если можно скачать утилиту для FakeAP и не заморачиваться?". Ответ простой: функционал и понимание того, как работают подобные устройства. В самодельной версии функционала будет намного больше и ты, также, будешь знать, как все это дело работает и настраивается. Также можно будет потренироваться в тестировании этой AP на защищенность, при этом легально. А уязвимости будут. Много уязвимостей, которые дадут тебе боевой опыт.

В ИБ, программировании я новичок и это моя первая статья на форуме, будут ошибки, неточности или пробелы в подаче информации, поэтому адекватная критика приветствуется. Также постараюсь отвечать на каждый вопрос.

Статья написана для новичков. Она поможет разобраться в устройстве AP на Linux, локальном сервере и файловой системе Linux, а также даст некоторые знания в веб-программировании.

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

Буду использовать одноплатник Raspberry Pi 3B+, но ты можешь использовать любую другую вверсию этого одноплатника или вообще использовать десктопный Linux на базе Debian. Процесс не будет различаться. Разве что тебе может потребоваться обзавестись внешним WiFi адаптером с возможностью поддержки режима точки доступа (Access Point (AP))

1589199066750.png


Устанавливаем образ Raspbian на micro SD и запускаем малину. Графическая оболочка нам не потребуется, поэтому рекомендую скачать образ без нее, чтобы не занимать лишнее место и не тратить ресурсы одноплатника впустую.

Все команды будут выполнять от имени суперпользователя, поэтому пропиши сразу sudo su или перед каждой командой прописывай sudo.

Первым делом - обновление:

Bash:
apt update && apt upgrade -y

Первое обновление может занять от получаса, можешь сходить пока за чайком.

После обновления установим некоторые компоненты:

Bash:
apt install hostapd
- программа для создания самой точки доступа.
Bash:
apt install dnsmasq
- dhcp и dns в одном флаконе.

dhcp - программа для определения ip-адресов в пределах локальной сети
dns - система доменов

На просторах интернета полно инструкций, в которых используется isc-dhcp-server. Но, попробовав dnsmasq, было решено отказаться от isc-dhcp-server, т.к. dnsmasq удобнее, легче настраивается и содержит dns сервер, который нам понадобиться.

Далее нам надо отредактировать конфигурационный файл нашей AP:

Bash:
nano /etc/hostapd/hostapd.conf


Код:
interface=wlan0 # указываем имя нашего WiFi устройства
driver=nl80211 # Драйвер для него. Если вы используете внешний адаптер, драйвер может быть другим. Узнать название адаптера можно командой airmon-ng (Напишите в комментариях другие способы, подалуйста :) )
ssid=Имя_AP # Указывается без ковычек (Ковычки будут отображаться в названии AP)
hw_mode=g # Режим работы сетевой карты. Лучше указать его, даже если твоя WiFi-карта способна на лучший, т.к. не все устройства смогут подключиться к лучшему
channel=1 # Канал, на котором будет висеть точка доступа
maccaddr_acl=0 # Блокировка MAC адресов)
# Следующие настройки устанавливают шифрование и пароль на AP. Если ты хочешь получить открытую (Без пароля) AP, можно не записывать эти строки
wpa=2 # Шифрование WPA2
wpa_passphrase=password # Пароль для подключения к AP (Минимум 8 символов)
wpa_pairwise=TKIP
rsn_pairwise=CCMP
atuth_algs=1

Закрываем файл сочетанием клавиш Ctrl+X и на вопрос о сохранении нажимаем Y.

Следующий шаг - настройка dns и dhcp, чтобы устройства могли подключиться и получить локальный ip-адресс.

ВНИМАНИЕ! Если ты настраиваешь одноплатник по SSH, не перезагружай малинку и не отключайся от сети.
Место нашего dhcp сервера займет dnsmasq и новый ip тебе никто не выдаст, пока не закончим настройку.


Bash:
nano /etc/network/interfaces

И прописываем там следующие настройки:

Код:
auto wlan0 # Включаем наш WiFi модуль при загрузке системы
iface wlan0 inet static # Указываем, что должны получить статичный ip-адрес
addres 192.168.10.1 # IP-адрес, который ты хочешь получить (Указывай ip-адрес, который отличается от ip-адреса твоего доманего роутера, чтобы в будущем не было конфликтов)
netmask 255.255.255.0 # Маска сети (Будет изменяться четвертый байт)
gateway 192.168.10.1 # Шлюз

Пропишем dns серверы. Будем использовать гугловские:

Bash:
nano /etc/resolv.conf

Код:
nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

После перезагрузки моей малинки, у меня почему-то сбрасывались записи в этом файле, поэтому пропишем запрет на перезапись файла:

Bash:
chattr +i /etc/resolv.conf
# Если захочешь изменить содержимое файла, пропиши:
chattr -i /etc/resolv.conf
# И после его редактирования поставь запрет на перезапись
chattr +i /etc/resolv.conf

Настройка dhcp:

Очистим файл /etc/dnsmasq.conf от стандартных записей. В файле будет много комментариев и инструкций, быстро очистить файл можно командой

Bash:
echo "" > /etc/dnsmasq.conf/ # Посылаем запись на "ничего" с функцией перезаписи и получаем пустой файл

Открывем этот файл для редактирования:

Код:
nano /etc/dnsmasq.conf

И прописываем там следующие настройки:

Код:
user=dnsmasq # Пользователь, который будет управлять dhcp. Пользователя мы создадим позже
group=dnsmasq # Рабочая группа пользователя

port=53 # Стандартный порт для DNS

cache-size=1024 # Число хранимых доменов в кэше

domain-needed
bogus-priv # Эти две строчки не дают обращаться к глобальному dns, а использовать локальные (Должно снизить нагрузку на наш сервер)

interface=wlan0 # Интерфейс, на котором будет работать dns

except-interface=ppp0 # Не использовать этот интерфейс. Чтобы не было багов и противоречий

dhcp-range=192.168.10.10,192.168.10.110,12h # Выдавать ip адреса в диапазоне от 192.168.10.10 до 192.168.10.110 и запоминать выданный ip и MAC адрес подключенного устройства 12 часов

dhcp-host=12:12:12:12:12:12,ignore #Блокировка устройств с таким MAC адресом. Строчек может быть несколько. Если не хочешь никого блокировать, можешь не записывать ее

dhcp-authoritative # Делает это устройство главным в локальной сети. Если планпланируешь сделать из устройства ретранслятор, не прописывай эту строчку. Но мы делаем сервер, чтобы потом можно было разместить фейковые сайты, поэтому прописываем

Сохрани и закрой файл.

Теперь добавим пользователя и группу для dnsmasq

Bash:
useradd -r dnsmasq # Создание пользователя с именем dnsmasq
groupadd -r -g dnsmasq dnsmasq # Добавление его в группу dnsmasq

Далее пропишем автозагрузку hostapd и dnsmasq

Bash:
systemctl enable hostapd
systemctl enable dnsmasq

Перезагрузи устройство и попробуй подключиться к нему с помощью смартфона или ноутбука. Все должно работать.
Интернет роутер пока раздавать не умеет, даже если подключить к нему LAN-кабель. Статья получилась не маленькой и мост мы сделаем в следующей части, которую я напишу, если тебе понравится эта.

Если захочешь установить что-то на малинку, то надо включить проводной интерфейс и получить для него ip от домашнего роутера. Втыкай LAN-кабель в малинку и прописывай:

Bash:
nano ./dhclient.conf # Создадим файл с настройками dns, т.к. старым программа не сможет воспользоваться

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

Код:
nameserver 8.8.8.8
nameserver 8.8.4.4


Bash:
ifconfig eth0 up # Если название твоего проводного интерфейса отличается, прописывай в команде имя своего интерфейса
dhclient -4 eth0 -s ./dhclient.conf

Проверь, получен ли интернет ping google.com

Теперь на устройстве активны два интерфейса со своим локальным ip-адресом (Именно об этом было написано раньше. Если бы интерфейсы имели одинаковый локальный ip, мы бы получили конфликт. А так ты можешь пользоваться интернетом с одного интерфейса и раздавать WiFi с другого. Но WiFi сеть не имеет никакого отношения к проводной и на ней не будет интернета (Пока)).

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

Можешь протестировать самодельную AP на безопасность.

До встречи! :)
 
Последнее редактирование:

ghostphisher

местный
07.12.2016
2 602
3 413
BIT
0
От себя добавлю: если будете строить точку, где планируется большой, постоянный траффик и Вы его будете логировать - ставить на малину хорошее охлаждение, иначае 30-40 минут и будет завис от перегрева. Ну или ставить в хорошее прохладное место =) если планируете закинуть малину в рюкзак, начать работу по фейк ап - перегреется быстро.
 

HebiNeco

Green Team
31.08.2019
124
35
BIT
0
От себя добавлю: если будете строить точку, где планируется большой, постоянный траффик и Вы его будете логировать - ставить на малину хорошее охлаждение, иначае 30-40 минут и будет завис от перегрева. Ну или ставить в хорошее прохладное место =) если планируете закинуть малину в рюкзак, начать работу по фейк ап - перегреется быстро.
Пока хватает радиаторов (Примерная температура 50-60 градусов). Да, поставлю вертушку позже, спасибо :)
 

Xarlan

One Level
15.05.2020
5
2
BIT
0
разве NetworkManager не будет "ругаться" на записи в /etc/network/interfaces
и для полноценной FakeAP разве не надо форвардить пакеты с wan на lan? через теже iptables?
 

zhenyoker

Green Team
27.04.2017
30
3
BIT
0
а в чём fake? парсить HTTP? я думал хотя бы подмена dns на фишинги будет. ждём продолжения)
 

HebiNeco

Green Team
31.08.2019
124
35
BIT
0
разве NetworkManager не будет "ругаться" на записи в /etc/network/interfaces
и для полноценной FakeAP разве не надо форвардить пакеты с wan на lan? через теже iptables?
а в чём fake? парсить HTTP? я думал хотя бы подмена dns на фишинги будет. ждём продолжения)
Это первая часть. Настройка именно AP. Да, дальше буду разбирать подмену днс, iptables и клонирование сайтов. Разбираюсь в iptables и ищу способ сделать все не сложно, но эффективно. И чтобы ресурсов малинки хватало :)
 
  • Нравится
Реакции: Stxi

Xarlan

One Level
15.05.2020
5
2
BIT
0
Это первая часть. Настройка именно AP
как раз на этом этапе и надо настраивать NetworkManager - ибо он управляется сетевым интерфейсом, а тут пытается hostapd/dnsmasq начать рулить

вот тут себе писал тоже конфиг hostapd, который в итоге смог запуститься лично у меня, ибо другие подобные конфиги - не позволяли нормально подключаться к fake AP
 

HebiNeco

Green Team
31.08.2019
124
35
BIT
0
как раз на этом этапе и надо настраивать NetworkManager - ибо он управляется сетевым интерфейсом, а тут пытается hostapd/dnsmasq начать рулить

вот тут себе писал тоже конфиг hostapd, который в итоге смог запуститься лично у меня, ибо другие подобные конфиги - не позволяли нормально подключаться к fake AP
Спасибо. Я тоже еще только учусь, поэтому для кого-то мои действия выглядят странно :) Но мне понравилась настройка hostapd/dnsmasq.
 

Xarlan

One Level
15.05.2020
5
2
BIT
0
Я тоже еще только учусь
ты в этом не одинкок %) Для меня тоже было долгая закадка проблема - как сделать так, что бы подключиться к wi-fi и искать даташит на железку и в тоже самое время подключиться по ethernet к этой железке для эксперементов

1590140232999.png


И позволю себе картиночку прикрепить, что если и задавать IP адреса в своей сетке/лабе - то только из этого диапазона, а то потом чудеса можно ловить %) (это если не упарываться в глубокую маршрутизиацию)
 
  • Нравится
Реакции: Adagumer и ghostphisher

Stxi

New member
24.05.2020
1
0
BIT
0
ждём вторую часть, интересно это направление
а с HTTPS реализовать никак?
 

HebiNeco

Green Team
31.08.2019
124
35
BIT
0
ждём вторую часть, интересно это направление
а с HTTPS реализовать никак?
Пока пробую организовать локальную часть. Не думал, что будут такие трудности для написания второй части. В локальной сети https обычно не ставится, т.к. используются интернет-сервисы для ssl. Но есть вариант пихать самоподписанный сертификат. Но это установка его пользователем и гиблое дело.
 

bigazzzz

New member
07.05.2019
2
0
BIT
0
1. Статья писалась на основании https://habr.com/ru/post/188274/. Именно поэтому iptables и нет. В статье же этого не было. Хорошим тоном считается указывать источник того, на основании чего писалось.
2. Там же. В этой статье используется
chattr +i /etc/resolv.conf,
что на самом самом деле попахивает лютым "этимкакего?". Просто жуткий костыль.
3. Зачем в названии raspberry - непонятно.
4. Это не полноценная AP. Нужно чтобы AP еще ходила в сеть. Я подключал сеть через кабель в eth0, а далее
а) Разрешаем forwarding
[B]echo 1 > /proc/sys/net/ipv4/ip_forward[/B]
б) Nat-им траффик
[B]iptables -tnat -A POSTROUTING -o eth0 -j MASQUERADE[/B]
Все! Работать будет до перезагрузки. Где тут сложность, о которой говорит автор - непонятно.
5. Для фишинга в dnsmasq используются алиасы
Перенаправление IP-адреса 111.111.111.111 на 222.222.222.222
alias=111.111.111.111,222.222.222.222
Пример для vk.com
Bash:
Address: 87.240.137.158
Name:   vk.com
Address: 87.240.190.67
Name:   vk.com
Address: 87.240.190.72
Name:   vk.com
Address: 87.240.190.78
Name:   vk.com
Address: 93.186.225.208
Name:   vk.com
Address: 87.240.139.194
Ну и прописываем в alias для этих ip-адресов свой фишинговый, расположенный на 10.0.0.10
Bash:
alias = 87.240.190.67,10.0.0.10
alias = 87.240.190.72,10.0.0.10
alias = 87.240.190.78,10.0.0.10
alias = 93.186.225.208,10.0.0.10
alias = 87.240.139.194,10.0.0.10
Изич.
А можно еще проще
address=/vk.com/10.0.0.10
6. А дальше уже полет фантазии. Например сниффить траффик tshark или "раздевать" https через sslstrip

p.s. Чтобы работал NAT после перезагрузки - оставлю для домашнего изучения.
 

HebiNeco

Green Team
31.08.2019
124
35
BIT
0
1. Статья писалась на основании https://habr.com/ru/post/188274/. Именно поэтому iptables и нет. В статье же этого не было. Хорошим тоном считается указывать источник того, на основании чего писалось.
2. Там же. В этой статье используется
chattr +i /etc/resolv.conf,
что на самом самом деле попахивает лютым "этимкакего?". Просто жуткий костыль.
3. Зачем в названии raspberry - непонятно.
4. Это не полноценная AP. Нужно чтобы AP еще ходила в сеть. Я подключал сеть через кабель в eth0, а далее
а) Разрешаем forwarding
[B]echo 1 > /proc/sys/net/ipv4/ip_forward[/B]
б) Nat-им траффик
[B]iptables -tnat -A POSTROUTING -o eth0 -j MASQUERADE[/B]
Все! Работать будет до перезагрузки. Где тут сложность, о которой говорит автор - непонятно.
5. Для фишинга в dnsmasq используются алиасы
Перенаправление IP-адреса 111.111.111.111 на 222.222.222.222
alias=111.111.111.111,222.222.222.222
Пример для vk.com
Bash:
Address: 87.240.137.158
Name:   vk.com
Address: 87.240.190.67
Name:   vk.com
Address: 87.240.190.72
Name:   vk.com
Address: 87.240.190.78
Name:   vk.com
Address: 93.186.225.208
Name:   vk.com
Address: 87.240.139.194
Ну и прописываем в alias для этих ip-адресов свой фишинговый, расположенный на 10.0.0.10
Bash:
alias = 87.240.190.67,10.0.0.10
alias = 87.240.190.72,10.0.0.10
alias = 87.240.190.78,10.0.0.10
alias = 93.186.225.208,10.0.0.10
alias = 87.240.139.194,10.0.0.10
Изич.
А можно еще проще
address=/vk.com/10.0.0.10
6. А дальше уже полет фантазии. Например сниффить траффик tshark или "раздевать" https через sslstrip

p.s. Чтобы работал NAT после перезагрузки - оставлю для домашнего изучения.
Вы ошибаетесь. Эта статья не была использована для написания моей. Действительно, команды почти одинаковые. Не придумывать же мне свои программы для hostAP. Попробуйте создать точку доступа, где процесс ее создания будет отличаться от статей в гугле. То, что я пришел к таким же действиям, как и автор статьи на хабре, говорит лишь о совпадении. Я действительно перепробовал много разных инструментов и способов, чтобы написать эту статью. К тому же она не ограничится одной частю, как я и написал.
Эти статьи далеко не идентичны, т.к. я старался разъяснить абсолютно каждую команду.
Я учусь. И полезный опыт переношу на форум, чтобы другим было проще разобраться. Не стоит делать преждевременных выводов :)

По пунктам:
2) Команда запрета изменения файла в Linux одинакова на всех машинах семейства Debian. Подумайте немного, прежде чем обвинять кого-то. А запрет нужен был. Файл постоянно сбрасывался. Очевидно было запретить его изменение. Обвините еще в использовании редактора nano :)
3) Raspberry - т.к. далее процесс будет именно под нее. В последующих статьях процесс будет отличаться от обычных Debian-систем, т.к. под малинку я не нашел инструментов с нужным мне функционалом, хотя на Debian они есть и прекрасно работают.
4) Это неполноценная AP, т.к. в последствии планируется, что у нее не будет доступа в интернет. Это fishing AP, которую можно закинуть в рюкзак и собирать данные. Мы делаем не роутер и не повторитель с окном в интернет. И об этом окне будет упомянуто в последнюю очередь.
5) Вы предлагаете прописать dns для большинства сайтов? Это не рационально.
6) Опять же, не рационально. Зачем снифить трафик, если можно нужные данные записывать в бд или тестовый документ? Нагрузки на малинку меньше, а полезной информации больше. И не надо чистить захваченный трафик от ненужных данных, что опять же экономит ресурсы и память.

Сложности с оптимизацией и максимальной простотой, чтобы малинке было не сложно со всем этим работать, а настроить все это было легко и понятно.
 
Последнее редактирование:
  • Нравится
Реакции: PoLMoRFi

Xarlan

One Level
15.05.2020
5
2
BIT
0
2 HebiNeco
4) Это неполноценная AP, т.к. в последствии планируется, что у нее не будет доступа в интернет. Это fishing AP, которую можно закинуть в рюкзак и собирать данные. Мы делаем не роутер и не повторитель с окном в интернет. И об этом окне будет упомянуто в последнюю очередь.

если задача делать fake AP, и собирать данные
может рассмотреть вариант тогда на esp32?
C точки зрения компактности/автономности может оказаться лучше, чем малина
 

HebiNeco

Green Team
31.08.2019
124
35
BIT
0
2 HebiNeco


если задача делать fake AP, и собирать данные
может рассмотреть вариант тогда на esp32?
C точки зрения компактности/автономности может оказаться лучше, чем малина
Плохо знаком с этой платформой. И далеко не все на ней можно реализовать в плане нехватки софта. Но да, идея хорошая. Даже не задумался о ней, хотя валяется в столе :)
 

Vedmak

One Level
07.06.2019
3
2
BIT
0
6. А дальше уже полет фантазии. Например сниффить траффик tshark или "раздевать" https через sslstrip

sslstrip работает еще разве? я года три назад с ним эксперименты ставил - уже ни один серьезный сайт таким образом не работал.
 
  • Нравится
Реакции: HebiNeco и zhenyoker

Xarlan

One Level
15.05.2020
5
2
BIT
0
2 HebiNeco
еще как вариант для точки доступа -
тут тебе и линукс и компактность и думаю по питанию меньше, чем малинка
 

Cleric

One Level
11.07.2020
1
0
BIT
17
Кто-нибудь пробовал использовать Orange PI вместо малины? Все стратьи только про малину. Кали ставится через замену sourse.list без проблем, WiFi работает, но iwconfig пишет, что нет ваерлесс расширений на интерфейсе. (Orange Pi Zero2)
Не сталкивался раньше с ARM.
 
Мы в соцсетях:

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