пятница, 16 октября 2009 г.

Защита FTP в Total Commander'e

Достаточное количество веб-мастеров пострадало от ифреймов. Что такое ифрейм? Это обычная ссылка с html тэгом iframe, задачей которой является перенаправление трафика с вашего сайта на чужой. Я сам в свое время пострадал от ифрейма вида

<!-- ~ --><iframe src="http://orentraff.cn/in.cgi?3" width="0" height="0" style="display:none"></iframe><!-- ~ -->

На тему этого ифрейма был топик на searchengines.ru и вроде даже обнаружили владельца сайта, указанного в ифрейме. Как вставляется ифрейм в чужие сайты? Обычно с помощью получения доступа по ftp, а доступ этот сводится к краже файлов с учетными записями ftp с вашего персонального компьютера. У меня ftp акки сперли, поскольку я решил разок поспамить с домашнего компьютера с выключенным антивирусом – прочитал где-то, что это якобы безопасно, спамилка вроде трояны не загрузит. Оказалось не так. Лишился почти всех своих дорвеев, за исключением некоторых, которые были сделаны Forum Generator'ом – там ифрейм при внедрении не уничтожал страницу и находился ниже моего редиректа. На некоторых фрихостах (например, на t35.com) не разрешено менять пароли доступа и сейчас я могу наблюдать то, что заливают на место моих бывших доров.

Как же защититься от кражи ftp акков? Способов довольно много. Вот известные мне:

  1. Не выключать антивирус и сетевой экран
  2. Спамить и производить другие «вирусоопасные» операции с отдельного компьютера
  3. То же что и п.1, но использовать не отдельный компьютер, а виртуальную машину
  4. То же что и п. 1, но использовать две разные операционные системы на одном компьютере
  5. Хранить файлы с конфиденциальной информацией на отдельном внешнем носителе (флэшка, CD, карта памяти и т.п.)
  6. Настроить на своих сайтах доступ по ftp только с определенного IP
  7. Всегда вбивать пароли и логины руками (не защищает от кейлоггеров), а не хранить их в файлах
  8. Использовать малораспространенные программы, под которые троянов обычно не пишут или не настраивают. Например, вместо Total Commander'a использовать Speed Commander или Frigate
  9. Хранить файл с паролями на своем компьютере, но не в том каталоге, в котором его использует программа, а в другом каталоге. В момент необходимости переносить файл с паролями в нужный для конкретной программы каталог, а по окончании работы переносить вручную обратно.
  10. Использовать программы, создающие мастер-пароль, т.е. пароль, с помощью которого шифруются файлы с конфиденциальной информацией, но который сам по себе на компьютере не хранится, а запоминается пользователем наизусть.
  11. Использовать самописные программы (в нашем случае – ftp-менеджеры), под которые трояны не настраиваются ввиду неизвестности этих программ.
  12. Использовать программы, которые используют файлы с паролями аналогично пунктам 2 – 4, т.е. на отдельной ЭВМ, отдельной операционной системе или на виртуальной машине.
  13. Не хранить пароли в браузерах или, по крайней мере, регулярно браузеры обновлять.

После того как я потерял бóльшую часть своих дорвеев, я стал внимательнее относиться к безопасности компьютера. Сетевой экран и антивирус не выключаю и храню фал с паролями в другом месте, а когда надо копирую его в нужное место. То есть использую я пункты 1 и 9 из вышеприведенного списка. Пользуюсь я по-прежнему Total Commander'ом и встроенным в него ftp-менеджером, хотя именно оттуда у меня и украли пароли. Долгое время я вручную перебрасывал файл с ftp акками из одного каталога в другой и обратно, потом мне это надоело, и недавно я написал скрипт, который автоматизирует эту работу. Скрипт написан на языке autohotkey ( см. autohotkey.com ) и должен быть помещён в автозагрузку, чтобы он начинал работу при старте Windows.

Что вы должны сделать, чтобы использовать скрипт:

  1. Скачать установщик языка autohotkey ( Скачать установщик ) и установить autohotkey на свой компьютер.
  2. Скопировать код скрипта с моего блога в текстовый файл и сохранить этот файл с расширением .ahk. Название может быть любым.
  3. Прописать в скрипте путь к каталогу, к которому Total Commander обращается в поисках файла с ftp акками. У меня такой файл (wcx_ftp.ini) хранится в каталоге C:\Program Files\Total Commander\ .
  4. Прописать в скрипте путь к каталогу в котором вы будете хранить файл с ftp. В моем примере это каталог D:\FT
  5. Создать ярлык на на файл скрипта и поместить это ярлык в автозагрузку операционной системы.

При желании можете скомпилировать скрипт прилагаемым к программе компилятором. Если вы программист, то можете добавить к скрипту какой-нибудь дополнительный функционал, например файл конфигурации, функцию переименования файла с ftp при перемещении его в сторонний каталог (в моем скрипте - D:\FT), функцию перемещения файла с ftp в случайный каталог.

Вот и сам код:

;************************************************************
; AutoHotkey Version: 1.0.48.05
; Автор: harvik
; Имя скрипта: total.ahk
;************************************************************
; Назначение скрипта
; Хранение файла с ftp аккаунтами в месте, назначенном пользователем. Подгрузка этого файла в момент работы с ftp
; и возврат на место после завершения работы с ftp
;*************************************************************



;==========НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ===========
;
Total_Path = C:\Program Files\Total Commander\ ; путь к каталогу, где Total Commander хранит файл с ftp
Total_Ftp = D:\FT\ ; путь к каталогу, где вы будете хранить файл c ftp аккаунтами
Ft = wcx_ftp.ini ; Название файла с ftp
;
; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ========

; ========== Начало блока функций ===================

Sizes()
{
global

FileGetSize, size1, %Total_Path%%Ft%

FileGetSize, size2, %Total_Ftp%%Ft%

}

MoveTo() ; Перемещение файла с ftp аккаунтами в другой каталог
{
global Total_Path, Total_Ftp, Ft, size1, size2

Sizes()

IfExist, %Total_Path%%Ft%

{if size1 >= %size2% ;Сравнение размеров файлов с ftp в двух каталогах (папках)

FileMove, %Total_Path%%Ft%, %Total_Ftp%, 1

else FileDelete, %Total_Path%%Ft%

}

}


CopyFrom() ; Копирование файла с ftp аккаунтами в рабочий каталог Total Commander'а

{
global Total_Path, Total_Ftp, Ft, size1, size2

Sizes()

IfNotExist, %Total_Path%%Ft% OR size1 < %size2% ;Сравненние размеров файлов с ftp в двух каталогах (папках)

FileCopy, %Total_Ftp%%Ft%, %Total_Path%, 1

}

; ========== Конец блока функций ==============


#Persistent


Process, Priority,,L ; Установка низкого приоритета выполнения скрипта для снижения нагрузки на процессор.

IfNotExist, %Total_Ftp%
FileCreateDir, %Total_Ftp% ; Создание папки для хранения файла с ftp аккаунтами


TrayTip, Защита FTP акков, в Total Commander'е
Sleep, 5000
TrayTip


Begin:

MoveTo()
WinWait, ahk_class TTOTAL_CMD ;Ожидание загрузки Total Commander'а

IfWinExist, ahk_class TCONNECT

{

IfNotExist, %Total_Path%%Ft%

{
CopyFrom()
WinClose, ahk_class TCONNECT
WinWaitClose, ahk_class TCONNECT ; Пустое окошко "Соединение с FTP-сервером исчезает
IfWinExist, ahk_class TTOTAL_CMD
{
WinActivate, ahk_class TTOTAL_CMD ;
WinWaitActive, ahk_class TTOTAL_CMD
Send ^f ; Окошко "Соединение с FTP-сервером появляется уже со списком ваших FTP
Sleep, 5
}


}

}

else
{

MoveTo()
Goto, Begin

}

WinWaitClose, ahk_class TCONNECT

Goto, Begin


2 комментария:

  1. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  2. Только что столкнулся с такой же проблемой - из Тотал Коммандера своровали все пароли. А всё потому что я на пару часиков вылез из под Linux'а в Windows :)
    В нынешней версии Тотал Коммандера есть функция защиты паролей главным паролем, который наверняка зашифрован. Попробуем-с.

    ОтветитьУдалить