<~DarkNode~>
24.12.2016, 18:36
Глава 6Предыдущая глава (https://forum.antichat.xyz/threads/558632/)
Следующая глава (https://forum.antichat.xyz/threads/558743/)
Оглавление
https://forum.antichat.xyz/attachments/4769231/img_30c7c82eff.png
Привет колеги. Сегодня возьмем с вами ssh-test(172.16.0.1) машину
https://forum.antichat.xyz/attachments/4769231/2.png
Берется он довольно быстро,как только мы получили доступ к ssh машине(172.16.0.8)
Взять его можно двумя способами.Сначала я попытаюсь попытаюсь рассказать о более простом
Когда мы брали с вами токен отssh машины (https://forum.antichat.xyz/threads/558612/) то наверняка помним что находили с помощью самаписного скрипта на питоне папки с пользователями в которых мы и нашли токен.
https://forum.antichat.xyz/attachments/4769231/11.png
Но если немного поискал по папкам вы должны были наткнутся на еще один ssh ключ в папки a.modlin
https://forum.antichat.xyz/attachments/4769231/img_c9b6d2d648.png
А если вспомним письмо на почте Модлина - то мы не могли не обратить внимание на приложение которое генерирует,по принципу Google Authentificator, одноразовый порт для подключения на машину 172.16.0.1 (test-ssh)
https://forum.antichat.xyz/attachments/4769231/3.png
Конечно можно пойти более сложным и заковыристым путем через реверс апк приложения,изъять от туда класс который отвечает за генерацию порта и подключатся (Сложный способ мы также посмотрим после простого)... Но имхо есть вполне проще путь . Имея ключ от ssh и nmap можно вполне обойтись без реверса приложения.
И так давайте просканим весь диапазон портов машины 172.16.0.1 из машины 172.16.0.8:
https://forum.antichat.xyz/attachments/4769231/2.png
Как видим порт меняется каждые 30 секунд.
Давайте воспользуемся возможностями командной строки для вывода на экран только открытого порта:
https://forum.antichat.xyz/attachments/4769231/1.png
grep open -- фильтровать на вывод только те строки где встречается "open"
cut -d '/' -f 1 -- обрезать выводимые данные,в качестве разделителя использовать символ "/" -f 1 выводить первый столбец
grep -v 8071 -- не выводить строки где встречается слово 8071( в нашем случае на не нужен этот порт так как постоянно открыт на машине)
теперь давайте попробуем передать эту команду в качестве параметра для команды ssh
Код:
ssh -i key a.modlin@172.16.0.1 -p $(nmap -Pn -p 1-65534 172.16.0.1 --open | grep open | cut -d '/' -f 1 | grep -v 8071)
https://forum.antichat.xyz/attachments/4769231/8.png
Как видим мы успешно подключились к test-ssh машине,токен находятся в домашней директории:
https://forum.antichat.xyz/attachments/4769231/9.png
Для того что бы не спрашивало у нас фингерпринт и не пыталось записать в known_host можно для удобства добавить к команде следующие параметры(Хотя это не критично если мы их не используем):
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
https://forum.antichat.xyz/attachments/4769231/10.png
Как видите все действительно очень просто).
Теперь давайте также попробуем добраться до токена через реверс apk приложения:
Сперва давайте его скачаем и декомпилируем программой dex2jar:
https://forum.antichat.xyz/attachments/4769231/4.png
Дальше для удобного чтения кода я скачал программу JD-GUI
https://forum.antichat.xyz/attachments/4769231/6.png
Запустил в ней декомпилированую программу gds_authentificator
Видим что для генерации одноразового порта используется класс HOTP.class:
https://forum.antichat.xyz/attachments/4769231/11.png
https://forum.antichat.xyz/attachments/4769231/7.png
Давайте попробуем дернуть этот класс и скомпилировать его.
https://forum.antichat.xyz/attachments/4769231/12.png
Пробуем скомпилировать наш HOTP и видим кучу ошибок:
https://forum.antichat.xyz/attachments/4769231/14.png
Это из-за того что плохо объявлены переменные,давайте поправим немного код:
Код:
import java.security.GeneralSecurityException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class HOTP
{
private static String generateOTP(byte[] paramArrayOfByte, long paramLong, int paramInt)
throws NoSuchAlgorithmException, InvalidKeyException
{
byte[] arrayOfByte1 = new byte[8];
for (int i = -1 + arrayOfByte1.length; i >= 0; i--)
{
arrayOfByte1[i] = ((byte)(int)(0xFF & paramLong));
paramLong >>= 8;
}
byte[] arrayOfByte2 = hmac_sha1(paramArrayOfByte, arrayOfByte1);
int j = 0xF & arrayOfByte2[(-1 + arrayOfByte2.length)];
String str;
for (str = Integer.toString((int)(((0x7F & arrayOfByte2[j]) 65534) {
i %= 65534;
}
System.out.println(i);
System.out.println("TestLab_v10 by DarkNode For античат Forum");
}
}
Компилируем,запускаем и получаем порт:
https://forum.antichat.xyz/attachments/4769231/16.png
Ну дальше что делать я надеюсь понятно) По этому порту просто подключаетесь на test-ssh так как как в первом способе по ssh ключу ) .За 30 секунд вы я думаю успеете)
Всем спасибо за внимание)
Предыдущая глава (https://forum.antichat.xyz/threads/558632/)
Следующая глава (https://forum.antichat.xyz/threads/558743/)
Оглавление
Следующая глава (https://forum.antichat.xyz/threads/558743/)
Оглавление
https://forum.antichat.xyz/attachments/4769231/img_30c7c82eff.png
Привет колеги. Сегодня возьмем с вами ssh-test(172.16.0.1) машину
https://forum.antichat.xyz/attachments/4769231/2.png
Берется он довольно быстро,как только мы получили доступ к ssh машине(172.16.0.8)
Взять его можно двумя способами.Сначала я попытаюсь попытаюсь рассказать о более простом
Когда мы брали с вами токен отssh машины (https://forum.antichat.xyz/threads/558612/) то наверняка помним что находили с помощью самаписного скрипта на питоне папки с пользователями в которых мы и нашли токен.
https://forum.antichat.xyz/attachments/4769231/11.png
Но если немного поискал по папкам вы должны были наткнутся на еще один ssh ключ в папки a.modlin
https://forum.antichat.xyz/attachments/4769231/img_c9b6d2d648.png
А если вспомним письмо на почте Модлина - то мы не могли не обратить внимание на приложение которое генерирует,по принципу Google Authentificator, одноразовый порт для подключения на машину 172.16.0.1 (test-ssh)
https://forum.antichat.xyz/attachments/4769231/3.png
Конечно можно пойти более сложным и заковыристым путем через реверс апк приложения,изъять от туда класс который отвечает за генерацию порта и подключатся (Сложный способ мы также посмотрим после простого)... Но имхо есть вполне проще путь . Имея ключ от ssh и nmap можно вполне обойтись без реверса приложения.
И так давайте просканим весь диапазон портов машины 172.16.0.1 из машины 172.16.0.8:
https://forum.antichat.xyz/attachments/4769231/2.png
Как видим порт меняется каждые 30 секунд.
Давайте воспользуемся возможностями командной строки для вывода на экран только открытого порта:
https://forum.antichat.xyz/attachments/4769231/1.png
grep open -- фильтровать на вывод только те строки где встречается "open"
cut -d '/' -f 1 -- обрезать выводимые данные,в качестве разделителя использовать символ "/" -f 1 выводить первый столбец
grep -v 8071 -- не выводить строки где встречается слово 8071( в нашем случае на не нужен этот порт так как постоянно открыт на машине)
теперь давайте попробуем передать эту команду в качестве параметра для команды ssh
Код:
ssh -i key a.modlin@172.16.0.1 -p $(nmap -Pn -p 1-65534 172.16.0.1 --open | grep open | cut -d '/' -f 1 | grep -v 8071)
https://forum.antichat.xyz/attachments/4769231/8.png
Как видим мы успешно подключились к test-ssh машине,токен находятся в домашней директории:
https://forum.antichat.xyz/attachments/4769231/9.png
Для того что бы не спрашивало у нас фингерпринт и не пыталось записать в known_host можно для удобства добавить к команде следующие параметры(Хотя это не критично если мы их не используем):
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
https://forum.antichat.xyz/attachments/4769231/10.png
Как видите все действительно очень просто).
Теперь давайте также попробуем добраться до токена через реверс apk приложения:
Сперва давайте его скачаем и декомпилируем программой dex2jar:
https://forum.antichat.xyz/attachments/4769231/4.png
Дальше для удобного чтения кода я скачал программу JD-GUI
https://forum.antichat.xyz/attachments/4769231/6.png
Запустил в ней декомпилированую программу gds_authentificator
Видим что для генерации одноразового порта используется класс HOTP.class:
https://forum.antichat.xyz/attachments/4769231/11.png
https://forum.antichat.xyz/attachments/4769231/7.png
Давайте попробуем дернуть этот класс и скомпилировать его.
https://forum.antichat.xyz/attachments/4769231/12.png
Пробуем скомпилировать наш HOTP и видим кучу ошибок:
https://forum.antichat.xyz/attachments/4769231/14.png
Это из-за того что плохо объявлены переменные,давайте поправим немного код:
Код:
import java.security.GeneralSecurityException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class HOTP
{
private static String generateOTP(byte[] paramArrayOfByte, long paramLong, int paramInt)
throws NoSuchAlgorithmException, InvalidKeyException
{
byte[] arrayOfByte1 = new byte[8];
for (int i = -1 + arrayOfByte1.length; i >= 0; i--)
{
arrayOfByte1[i] = ((byte)(int)(0xFF & paramLong));
paramLong >>= 8;
}
byte[] arrayOfByte2 = hmac_sha1(paramArrayOfByte, arrayOfByte1);
int j = 0xF & arrayOfByte2[(-1 + arrayOfByte2.length)];
String str;
for (str = Integer.toString((int)(((0x7F & arrayOfByte2[j]) 65534) {
i %= 65534;
}
System.out.println(i);
System.out.println("TestLab_v10 by DarkNode For античат Forum");
}
}
Компилируем,запускаем и получаем порт:
https://forum.antichat.xyz/attachments/4769231/16.png
Ну дальше что делать я надеюсь понятно) По этому порту просто подключаетесь на test-ssh так как как в первом способе по ssh ключу ) .За 30 секунд вы я думаю успеете)
Всем спасибо за внимание)
Предыдущая глава (https://forum.antichat.xyz/threads/558632/)
Следующая глава (https://forum.antichat.xyz/threads/558743/)
Оглавление