Статья Лаборатория тестирования на проникновение «Test lab v.10» — за гранью хакерских возможностей (6)

Глава 6
Предыдущая глава
Следующая глава
Оглавление

tl10.png


Привет колеги. Сегодня возьмем с вами ssh-test(172.16.0.1) машину

2.PNG


Берется он довольно быстро,как только мы получили доступ к ssh машине(172.16.0.8)
Взять его можно двумя способами.Сначала я попытаюсь попытаюсь рассказать о более простом
Когда мы брали с вами токен от ssh машины то наверняка помним что находили с помощью самаписного скрипта на питоне папки с пользователями в которых мы и нашли токен.

11.PNG


Но если немного поискал по папкам вы должны были наткнутся на еще один ssh ключ в папки a.modlin

Снимок2.PNG


А если вспомним письмо на почте Модлина - то мы не могли не обратить внимание на приложение которое генерирует,по принципу Google Authentificator, одноразовый порт для подключения на машину 172.16.0.1 (test-ssh)

3.PNG


Конечно можно пойти более сложным и заковыристым путем через реверс апк приложения,изъять от туда класс который отвечает за генерацию порта и подключатся (Сложный способ мы также посмотрим после простого)... Но имхо есть вполне проще путь . Имея ключ от ssh и nmap можно вполне обойтись без реверса приложения.
И так давайте просканим весь диапазон портов машины 172.16.0.1 из машины 172.16.0.8:

2.PNG


Как видим порт меняется каждые 30 секунд.
Давайте воспользуемся возможностями командной строки для вывода на экран только открытого порта:

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)
8.PNG


Как видим мы успешно подключились к test-ssh машине,токен находятся в домашней директории:

9.PNG


Для того что бы не спрашивало у нас фингерпринт и не пыталось записать в known_host можно для удобства добавить к команде следующие параметры(Хотя это не критично если мы их не используем):
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

10.PNG


Как видите все действительно очень просто).
Теперь давайте также попробуем добраться до токена через реверс apk приложения:
Сперва давайте его скачаем и декомпилируем программой dex2jar:

4.PNG


Дальше для удобного чтения кода я скачал программу

6.PNG


Запустил в ней декомпилированую программу gds_authentificator
Видим что для генерации одноразового порта используется класс HOTP.class:

11.PNG


7.PNG


Давайте попробуем дернуть этот класс и скомпилировать его.

12.PNG


Пробуем скомпилировать наш HOTP и видим кучу ошибок:

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]) << 24 | (0xFF & arrayOfByte2[(j + 1)]) << 16 | (0xFF & arrayOfByte2[(j + 2)]) << 8 | 0xFF & arrayOfByte2[(j + 3)]) % Math.pow(10.0D, paramInt))); str.length() < paramInt; str = "0" + str) {}
    return str;
  }
 
  public static byte[] hmac_sha1(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2)
    throws NoSuchAlgorithmException, InvalidKeyException
  {
    Mac localMac2;
    Mac localMac1;
    try
    {
      localMac2 = Mac.getInstance("HmacSHA1");
      localMac1 = localMac2;
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      for (;;)
      {
        localMac1 = Mac.getInstance("HMAC-SHA-1");
      }
    }
    localMac1.init(new SecretKeySpec(paramArrayOfByte1, "RAW"));
    return localMac1.doFinal(paramArrayOfByte2);
  }
 
  public String gen(String paramString, int paramInt1, int paramInt2)
  {
    try
    {
      String str = generateOTP(paramString.getBytes(), paramInt1, paramInt2);
      return str;
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      localNoSuchAlgorithmException.printStackTrace();
      return "";
    }
    catch (InvalidKeyException localInvalidKeyException)
    {
      for (;;) {}
    }
  }
   public static void main(java.lang.String[] args) {
String str = new HOTP().gen("WFLHQEBMJ3XLPDOY", (int)Math.floor(System.currentTimeMillis() / 1000L / 30L), 6);
    int i = Integer.parseInt(str.substring(-5 + str.length()));
    if (i > 65534) {
      i %= 65534;
    }
System.out.println(i);
System.out.println("TestLab_v10 by DarkNode For CodeBy Forum");
}

}

Компилируем,запускаем и получаем порт:

16.PNG


Ну дальше что делать я надеюсь понятно) По этому порту просто подключаетесь на test-ssh так как как в первом способе по ssh ключу ) .За 30 секунд вы я думаю успеете)
Всем спасибо за внимание)


Предыдущая глава
Следующая глава
Оглавление
 
D

Dmitry88

Особенно понравился способ подключения по ssh в слепую. Скорее всего, авторы лабы не учли этот способ ;)
 
  • Нравится
Реакции: <~DarkNode~>
L

LiJagger

Я очень извиняюсь. Но отсутствие 1-ой симпатии заступорило весь труд. Не могу довести код HOTP.java. Выручайте.
[doublepost=1485453292,1485453086][/doublepost]Глянул видео. Это Ваша реальная скорость работы или ускоренное видео? Не удивительно, что Вы взяли призовое место)
 
  • Нравится
Реакции: Dmitry88 и <~DarkNode~>

Chena

Green Team
10.02.2017
12
4
BIT
0
Я очень извиняюсь. Но отсутствие 1-ой симпатии заступорило весь труд. Не могу довести код HOTP.java. Выручайте.
[doublepost=1485453292,1485453086][/doublepost]Глянул видео. Это Ваша реальная скорость работы или ускоренное видео? Не удивительно, что Вы взяли призовое место)
Коллега ты не один такой )
 
W

Wizard

Проблемы с исправлением ошибок.Помогите

О чем это сообщение ? Администратор.
 
Последнее редактирование модератором:
  • Нравится
Реакции: Wiz116
Мы в соцсетях:

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