суббота, 30 июля 2016 г.

Начинаю изучать FreeBSD

Милости прошу к нашему сервашу.





По долгу службы, да и на благо родины + ради саморазвития решил я изучить фряху и ее возможности роутинга.
Вот тривиальная задача - есть роутер на фре с двумя провайдерами, за которым через свитч подрублены 2 тачки (172.16.0.2 и 172.16.0.3)
На роутере есть 2 интернета - первый работает через дефолтный шлюз, у второго openvpn интерфейса (tap0) айпи адрес 10.0.0.2 и шлюз 10.0.0.1
Нужно чтоб первая клиентская тачка (172.16.0.2) ходила через первый инет (дефолтный шлюз), и вторая (172.16.0.3) через второй. При этом нужно чтоб машина с IP 172.16.0.3 могла заходить по ssh на роутер наш фряшный (172.16.0.1) и получать доступ к сервисам на нем (ssh, proxy etc).

Таки запилил, ничего сложного.

1) Пересобираем ядро ОС с нужными нам параметрами, устанавливаем, ребутаемся.

options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=50
options         IPFIREWALL_NAT
options         LIBALIAS
options         ROUTETABLES=16
options         DUMMYNET
options         HZ="1000"
options         IPFIREWALL_DEFAULT_TO_ACCEPT

2) Настраиваем сеть.
3) Настраиваем IPFW

Конфиг IPFW, его нужно разбить на 2 части и 1 часть исполнять после загрузки ос и поднятия интерфейса em0, вторую часть после загрузки и поднятия интерфейса tap0  (тама где двойка + последняя строка касается интерфейса tap0), последних 2 строки тоже исполнять после поднятия tap0

#!/bin/sh
/sbin/ipfw -q flush
/sbin/ipfw disable one_pass
/sbin/ipfw nat 1 config if em0 reset same_ports
/sbin/ipfw nat 2 config if tap0 reset same_ports
/sbin/ipfw add nat 1 ip from 172.16.0.2 to any out
/sbin/ipfw add nat 2 ip from 172.16.0.3 to any out via em0
/sbin/ipfw add nat 1 ip from not me to any in
/sbin/ipfw add nat 2 ip from not me to any in via tap0
/sbin/ipfw add fwd 10.0.0.1 ip from 172.16.0.3 to not me



и не забываем добавить в /etc/rc.conf
gateway_enable="YES"  (врубаем форвардинг пакетов в ядре)
в /etc/sysctl.conf
net.inet.ip.fastforwarding=1   (врубаем быстрый фовардинг - будет пахать быстрее на 20-30%, но может побить фреймы IPSec, если он используется.

проверил на машинах 172.16.0.2 и 172.16.0.3 действительно первая ходит через первый инет вторая через второй

поднимаем SOCKS5 прокси для второго провайдера (VPN)!!!
копируем /etc/ssh/sshd_config в /etc/ssh/sshd_config_fib1
редактируем конфиг sshd_config_fib1, задаем порт отличный от стандартного ssh (например 23), и listen 127.0.0.1

используя команду setfib, прокладываем маршрут по 1 шлюзу через tap0
setfib 1 route add default 10.0.0.1
запускаем после подключения к интерфейсу tap0
setfib 1 /usr/sbin/sshd -f /etc/ssh/sshd_config_fib1

и сопсно запускаем соксик:

 nohup sshpass -p [пароль_рута] ssh -p 23 -N -D 192.168.0.250:1089 root@localhost &
можно создать отдельного юзера и от него запускать сокс

все, на интерфейсе 192.168.0.250 на 1089 появился соксик пятый который виден из локалки и пашет через 2 провайдера.

чтоб поднять сокс для 1 прова нужно просто выполнить 
 nohup sshpass -p [пароль_рута] ssh -p 22 -N -D 192.168.0.250:1090 root@localhost &

все, на интерфейсе 192.168.0.250 на 1089 появился соксик пятый который виден из локалки и пашет через 1 провайдера.

это если ssh дефолтный висит на 22 порту (а это как бы не круто, не забываем его перевесить на 2244 хотя бы).

пятница, 10 июня 2016 г.

Вебсервер своими руками, который отдает картинку и штмл-файл)))
Собственно, для этого нам понадобиться netcat, bash, html и графический файл с картинкой.
1) устанавливаем на сервер netcat из репозитория
2) пишем html-файл, называем index.html

<html>
        <h2>Hello world from Melnax Web server, v 0.0</h2><br>
        <img src="http://rockorus.ru:8889/image.jpg">
</html>

3) создаем bash-скриптик server.sh
поскольку неткат вылетает после отдачи данных, ставим это все в бесконечный цикл.

while true
do
nc -l 8888 < index.html
nc -l 8889 < image.jpg
done

4) ложим картинку image.jpg рядом с bash-скриптом и index.html

5) запускаем под скрином ./server.sh

6) результат можно глянуть тут

http://rockorus.ru:8888


конечно это все хуета... но зато нескучно убил 10 минут времени

пятница, 20 мая 2016 г.

Конвертируем ЗверополисЪ в MP4, в два прохода, с максимальным качеством.
За основу взят блюрейрип- исходник mkv с nnm-club Full HD, весом 5.7 ГБ
Отсюда http://nnmclub.to/forum/viewtopic.php?t=1018396


//первый проход
ffmpeg -i Zootopia.2016.BDRip.1080p.LINE.RUS.mkv -t 01:40:03 -acodec mp3 -ab 96k -af volume=+7 -map 0:a:0 -map 0:v:0 -vcodec libx264 -preset veryslow -vf scale=960:404 -pass 1 -vb 1000k Zveropolis.mp4

//второй

ffmpeg -i Zootopia.2016.BDRip.1080p.LINE.RUS.mkv -t 01:40:03 -acodec mp3 -ab 96k -af volume=+7 -map 0:a:0 -map 0:v:0 -vcodec libx264 -preset veryslow -vf scale=960:404 -pass 2 -vb 1000k Zveropolis.mp4

четверг, 19 мая 2016 г.

Шпаргалочка по openvz \ virtuozzo

Шпаргалочка по openvz \ virtuozzo


vzctl create 1 --ostemplate centos-7-x86_64           - создать контейнер (ID=1) с предустановленной centos7 (образ качается и устанавливается из Интернета)
prlctl delete 2                                       - удалить контейнер (ID=2)
prlctl list -a                                        - вывести список всех контейнеров-виртуальных машин и их состояние (запущен остановлен приостановлен итд)
prlctl start 1                                        - запустить виртуальную машинку (ID=1)
prlctl stop 1                                         - остановить виртуальную машинку(ID=1)
prlctl enter 1                                        - зайти в машинку-контейнер для работы снутри
prlsrvctl net list                                    - показать сетевые адаптеры всей системы
vzctl set 1 --ram 1024M --swap 1056M --save           - задает ОЗУ и размер файла подкачки для машины (ID=1)
prlctl restart 1                                      - перезапуск виртуальной машины (ID=1)

vzctl set 1 --ipadd 192.168.0.1 --save                - добавить IP в машинку (ID=1)
vzctl set 1 --ipdel 192.168.0.1 --save                - удолить IP из машинки (ID=1)
vzctl set 1 --nameserver 8.8.8.8 --save               - добавить DNS в машинку (ID=1)

nano /etc/modprobe.d/parallels.conf  - поменять  ip_conntrack_disable_ve0=1 на  ip_conntrack_disable_ve0=0 , перезагрузить нужно для работы nat в iptables


iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE  - добавить это в /etc/rc.local   - разрешит виртуальным машинам выход в Интернет (если айпишники виртуалок лежат в пределах подсети 192.168.0.0/24 )
iptables -t nat -A PREROUTING -p tcp --dport 2245 -j DNAT --to-destination 192.168.0.1:22   - проброс 2245 порта с хоста на 22 гостя - чтоб можно было через Интернет зайти по ssh

среда, 13 апреля 2016 г.

ARP Spoofing в локальных сетях.

Недавно поставил перед собой интересную задачу - почитать переписку вконтакте того, кто сидит на публичном вайфае (например в торгово-развлекательном центре) рядом со мной.
Весь прикол заключается в том, что любое сетевое оборудование имеет свой аппаратный mac-адрес, и взаимодействие между железками в пределах локальной сети (компьютерами, маршрутизаторами, смартфонами) осуществляется на основе mac-адресов. Для этого у каждого устройства внутри хранится локальная таблица сопоставления IP и MAC. Когда мы пингуем ближнего своего, наш компьютер посылает широковещательный ARP - запрос, например "who has 192.168.0.93" и ему приходит ответ например ‎FC-AA-14-1C-FB-98.
Наша задача послать на устройство жертвы фальшивый ARP ответ (даже не ответ, а просто arp пакет) что IP роутера имеет MAC - адрес сетевого адаптера нашего ноутбука. Android и IOS устройства начинают сразу же гнать интернет через наш ноутбук!
Для этого необходимо воспользоваться утилитой arpspoof из пакета dsniff

Теперь представим ситуацию - мы сидим в ТРЦ с ноутбуком на публичном вайфае. Все клиенты находящеися рядом подключены к роутеру, который раздает всем интернет. Наша задача стать самому роутером и пустить весь чужой трафик через себя. 
Сидят в основном со смартфонов, а мобильное приложение ВК на андроид и ios по умолчанию не использует https (если не включить это в настройках).

... Начинаем
Первое что нужно сделать - изучить сеть в которой мы находимся. Нам нужно подсмотреть IP роутера и прикинуть диапазон IP-адресов которые выдаются клиентам. Это можно сделать исходя из полученых от роутера по DHCP настроек (ip шлюза и маска сети).
Затем при помощи nmap нужно просканировать сеть на наличие доступных хостов. На выходе мы получим список IP - адресов мобильных устройств, которые подключены к сети. Android и IOS устройства отлично пингуются будучи подключеными к сети, поэтому ограничимся ping-сканированием.

nmap -sP 192.168.0.0/24 

(если наша сеть 192.168.0.0 и маска 255.255.255.0)
в выводе nmap после сканирования кроме доступных IP подключеных клиентов будет еще и описание производителя железки с этим адресом. Eсли Samsung - это смартфон самсунг, Lenovo - леново, Apple - айфон \ айпад итд. 
Осмотревшись вокруг и заглянув что за мобильное устройство в руках у тех кто рядом можно догадаться какую жертву мы нашли.

Становимся роутером и нюхаем чужой трафик!
Тут ничего сложного нету.


echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE
arpspoof -i wlan0 -t 192.168.0.103 192.168.0.1



wlan0 - интерфейс который на нашем ноутбуке подключен к публичному вайфаю (можно посмотреть через ifconfig)
192.168.0.103 - айпи нашей жертвы, которая у нас на крючке
192.168.0.1 - айпи настоящего роутера (которым мы прикинемся)

Все! Трафик жертвы идет через наш ноутбук! 
Дальше необходимо запустить снифер tcpdump или wireshark на интерфейсе wlan0 в режиме декодирования http-трафика. Можно сразу сохранять все в файл или разгребать в реальном времени. Показывает адреса всех запросов клиента и их содержимое.

Самое важное я забыл - подготовка платформы для этого всего.
Нужно скачать последнюю версию Lubuntu например и записать при помощи ultraiso на флешку. Загрузить ноутбук с нее.
Затем нужно подключиться к вайфай сети и установить пакеты dsniff (предоставляет утилиту arpspoof) , nmap, tcpdump и (если хочется GUI) - wireshark, через apt-get.

В следующей статье я расскажу о перехвате и расшифровке зашифрованого https трафика пользователей.


среда, 6 апреля 2016 г.

Ебаный фрегат. Стыдно.
*здесь будут шуточки про PPPoE, MTU и MRU

Часть сайтов не будет работать если в роутере не зафигачить строчку

iptables -A FORWARD -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Если нужно на самом роутере держать прокси не забываем что это локальный трафик не транзитный

iptables -A OUTPUT -o ppp0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

среда, 24 февраля 2016 г.

Доводим Windows 10 до ума.

1) Качаем и устанавливаем Windows 10 отсюда. Нам вполне подойдет X64FRE_RU-RU.ISO (3.75 гб). Это 64-битная система, при установке выбрать редакцию Home или Pro. Pro отличается сервером терминалов, инструментами управления групповыми политиками итд. Аналогична "максимальной" семерке. Если компьютер мощный - желательно ставить ее.
Подготавливаем установочную флешку при помощи UltraISO.
В BIOS можно отключить старый режим поддержки ос (CSM \ MBR) включить режим EFI. Я ставлю десятку в EFI режиме. Это более современный способ, когда BIOS обращается напрямую к файловой системе для загрузки ядра ОС, в отличие от старой модели с "загрузочным сектором". Это дает некоторые преимущества (о них как-нибудь потом).

При установке ПРОПУСКАЕМ все окна для ввода ключей (серийных номеров). Еще желательно выдернуть кабель интернета, чтобы ограничиться локальным аккаунтом (при наличии интернета инсталлятор будет вымагать для работы онлайн - аккаунт в облаке Microsoft). ОС уже "облачная".

Сразу после установки настраиваем соединение с Интернетом и идем в панель управления - обновления системы и ОБНОВЛЯЕМ. Нам предложено будет скачать новую сборку (Билд) Windows, на момент написания этой статьи от середины февраля 2016 года. Соглашаемся, ждем, перезагружаемся. После перезагрузки только что скачаная новая сборка будет установлена. Винда переустановиться с нуля, данные от предыдущего сетапа будут сохранены. После нескольких ребутов мы получим рабочий стол, снова идем в обновление системы, опять жмем на "поиск обновлений" и скорее всего получаем ответ что Windows уже обновлена и последней версии. На этом установка винды закончена. Имеем самую свежую ОС.

2) В репозитории 10 винды очень много драйверов для всех устройств и они обновляются вместе с операционной системой через Windows Update. Открываем диспетчер задач и убеждаемся, что все в порядке, все оборудование настроено и готово к работе. Если чего-то не хватает, ищем на сайте производителя железа драйвера, можно и в гугле по DevID. Кстати, подходят драва от семерки и восьмерки. Если нету под 10 (что странно).

3) Винда с дравами установлена - самое время ее крякнуть. Неактивированая винда не даст себя кастомизировать, будет ставить страшные обои и ругаться что она нелегальная. В роли кряка отлично подойдет KMS.NET Auto последней версии. Взять можно тут.
Встроеный в Windows антивирус (защитник Windows - сразу же ругнется на активатор. Поэтому на время активации его желательно выключить (в его окошке жмем на шестеренку настроек и там выключаем.

4) Подчищаем следы - после повторной установки системы у нас будет на диске C: папочка Windows.OLD , c копией старой винды (которая была установлена с флешки, до обновления). Открываем свойства диска, жмем на кнопку "очистка диска", далее на "очистить системные файлы" и ставим галочку на "предыдущие версии Windows" или типа того. После этого папка Windows.OLD пропадет.

На этом установка закончена, все железо работает как надо, драйвера установлены, винда обновлена и активирована (лицензирована). Все вроде бы работает, но выглядит страшно. Теперь самое время заняться кастомизацией.


Часть 2. Кастомизация Windows.

1) Ставим нескучные обои. Для этого в гугле вбиваем чтото типа "windows 7 default wallpaper" и попадаем сюда. Сохраняем это в положеную папку (C:\Windows\Web\Wallpaper) рядом с другими обоями, затем открываем свойства рабочего стола и ставим картинкой. Можно заюзать обоину от стартовой семерки (starter windows 7 wallpaper), у нее нецветные окошки, можно вообще без окошек (logoless).

2) Возвращаем стандартное меню Пуск - для этого достаточно установить бесплатную программу ClassicShell. (качать с сайта русскую версию). Таких программ хватает, ближайший коммерческий конкурент Start8. Поставить, крякнуть и идти дальше.
Можно кликнуть правой кнопкой по меню пуск, выбрать там "Настройки" и настроить внешний вид меню пуск и кнопки пуск.

3) Настраиваем панель задач для удобства - включаем маленькие значки, отключаем группировку кнопок. Затем правой кнопкой по рабочему столу - персонализация, и в разделе цвета включаем автоматический выбор главного цвета фона, и сделать панель задач прозрачной. После этого она станет не черной, а будет по цвету похожей на обои рабочего стола.

 4) Отключаем ненужные свистоперделки и сглаживание шрифтов (чтоб шрифты были не говно - вернем Тахому!).
Идем в свойства системы - дополнительно - быстродействие, ставим напротив обеспечить наилучшее быстродействие. После этого ставим две галки - отбрасывание теней значками на рабочем столе и отображать содержимое окна при перетаскивании. Применяем.
Идем в реестр и хардкорно вырубаем сглаживание шрифтов заменой некоторых ключей (описано тут).
В браузере google chrome нужно сходить на вкладку chrome://flags/ и врубаем опцию "отключить DirectWrite - рендеринг шрифтов". Насчет FireFox не знаю, не стоит у меня, но там тоже что-то было по-моему в about:config , надо гуглить.

5) Подчищаем автозагрузку - чтоб в трее не висели утилиты которые установились с драйверами, обдумано вычищаем ересь и веток автозагрузки реестра (HKCU/Software/Microsoft/Windows/Current Version/Run) , (HKLM/Software/Microsoft/Windows/Current Version/Run).
В настройках панели задач переходим в область уведомлений и ставим отображать все значки в панели уведомлений, а включении и выключении системных значков отключаем "центр уведомлений".

Для параноиков есть софт который удоляет из винды шпионские модули. Например тут.

 Перезагружаемся. Можно работать.