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

Методы cкрытия фишинговых сайтов от поисковиков и любопытных.

mor

HDD-drive
Пользователь
Регистрация
03.02.2021
Сообщения
24
Реакции
24
(Статья не для конкурса, а просто в помощь тем, кому эта информация может оказаться полезной)
Фишинг остается одной из самых распространенных и опасных кибератак, направленных на кражу учетных данных и другой конфиденциальной информации пользователей.
Чтобы продлить время жизни сайта, скрыть его от поисковиков и специалиствов, постоянно разрабатываются новые методы.
В этой статье мы рассмотрим основные методы, которые используются для достижения этой цели.

1. Фильтрация по User-Agent
Фильтрация по User-Agent основана на анализе заголовка HTTP-запроса, который указывает, какое устройство и браузер использует посетитель сайта. Если сайт обнаруживает, что запрос исходит от бота поисковой системы (например, Googlebot), он может отобразить безопасную или легитимную страницу. Это предотвращает индексацию фишингового сайта поисковыми системами.

Пример:
Код:
user_agent = request.headers.get('User-Agent')

if 'Googlebot' in user_agent:

    # Отправить безопасный контент

else:

    # Показать фишинговую страницу

2. Белый и черный список IP-адресов
Также можно использовать белые и черные списки IP-адресов для управления доступом к своим фишинговым сайтам. IP-адреса, принадлежащие известным поисковым системам или организациям ИБ, могут быть заблокированы или перенаправлены на безопасный контент.

Пример:
Код:
ip_address = request.remote_addr

if ip_address in known_search_engine_ips:

    # Отправить безопасный контент

else:

    # Показать фишинговую страницу

3. Проверка заголовка Referrer
Заголовок Referrer указывает, откуда пришел пользователь. Можно проверять этот заголовок, чтобы убедиться, что переход был выполнен из правильного источника, например, из фишингового письма. Если переход выполнен напрямую или из другого источника, сайт показывает безопасную страницу.

Пример:
Код:
referrer = request.headers.get('Referer')

if referrer == expected_referrer:

    # Показать фишинговую страницу

else:

    # Отправить безопасный контент

4. Перенаправление на основе JavaScript
Еще одним способом является использование JavaScript для перенаправления пользователей на фишинговый сайт только при выполнении определенных условий. Боты, как правило, не выполняют JavaScript, что позволяет скрыть фишинговый контент от них.

Пример:
Код:
<script>

    if (document.referrer == expected_referrer) {

        window.location.href = "phishing_page.html";

    }

</script>

5. Аутентификация на основе куки
Использование уникальных куки и ссылки, которые отправляются с фишинговым письмом. При переходе по уникальной ссылке эти куки устанавливаются, и сайт проверяет их наличие при каждом последующем запросе. Если куки отсутствуют, отображается безопасная страница.

Пример:
Код:
cookie = request.cookies.get('phishing_cookie')

if cookie == expected_cookie_value:

    # Показать фишинговую страницу

else:

    # Отправить безопасный контент

Заключение
Чтобы скрыть свои фишинговые сайты от поисковых систем и исследователей кибербезопасности можно использовать: фильтрацию по User-Agent, белые и черные списки IP-адресов, проверка заголовка Referrer, перенаправление на основе JavaScript и аутентификация на основе куки - все эти методы помогают избежать обнаружения.
 
В продолжение темы.

Еще одним вариантом защиты фишингового сайта, является использование сайта-прокладки (редирект)
Такой сайт используется для перенаправления целевого пользователя на основной фишинговый сайт через несколько секунд после первоначального запроса. Этот метод позволяет обойти автоматические сканеры и парсеры.

Прокладка принимает первоначальный запрос от пользователя и отображает безопасную страницу (например, прелоадер страницы)
Через заранее заданный интервал (например, через 1-2 секунды) сервер перенаправляет пользователя на основной фишинговый сайт с использованием HTTP-заголовка Location или с помощью JavaScript.

Пример:
Код:
<html>
<head>
  <meta http-equiv="refresh" content="2;url=http://phishingsite.com">
  <script type="text/javascript">
    setTimeout(function() {
      window.location.href = "http://phishingsite.com";
    }, 2000);
  </script>
</head>
<body>
  <p>Loading...</p>
</body>
</html>

Однако боты и сканеры могут также переходить по ссылке. Чтобы этого избежать, необходима обфускация. Для этого существуют различные инструменты обфускации HTML-кода и один из них- это html-obfuscator. (github.com/BinBashBanana/html-obfuscator)

HTML-обфускатор преобразует HTML-код в формат, который трудно прочитать или проанализировать автоматическим сканерам, но который будет корректно интерпретироваться веб-браузерами.
Этот процесс может включать шифрование ссылок, перемешивание кода и вставку бессмысленных элементов для затруднения анализа.

Пример обфусцированного HTML-кода:

Код:
<html>
<head>
<script type="text/javascript">
// Обфусцированный код
document .write(decodeURIComponent(atob( 'JTNDbWVOYSUyMGhOdHAtZXF1a-
XYLMOQLMJ ISZWZyZXNoITIy JTIwY29udGVudCUZRCUyMjELMOI1MjB1cmwLMORodH-
RwcyUzQS8vZG9t YWLuMi95b3VyZXZpbGdpbnhzZxJ2ZXJsdXJlITIyJTNFITBB" )))
;
</script>
</head>
<body>
  <p>Loading...</p>
</body>
</html>
 
В продолжение темы.

Для скрытия фишингового сайта, можно использовать настройки Nginx

1. Блокировка поисковых ботов:

Используем директиву map и список User-Agent'ов, которые необходимо заблокировать.

2. Настройка черного списка IP:
Создаем файл с IP-адресами, которые будут заблокированы, и включаем его в конфигурацию Nginx.

3. Проверка реферера:
Настройка проверки реферера, чтобы показывать контент только при наличии определенного реферера.

4. Показ разного контента для ботов и реальных пользователей:
Используем условные директивы для отображения разного контента в зависимости от User-Agent и реферера.

Пример конфигурации Nginx
Код:
http {
    map $http_user_agent $bot {
        default 0;
        ~*googlebot 1;
        ~*bingbot 1;
        ~*yandexbot 1;
        # здесь список других ботов и сканеров
    }

    map $http_referer $allowed_referer {
        default 0;
        ~*company.com 1; # URL реферера
    }

    include /etc/nginx/blacklist.conf;

    server {
        listen 80;
        server_name phishingsite.com;

        location / {
            if ($bot) {
                return 403; # Блокировка ботов
            }

            if ($allowed_referer = 0) {
                return 403; # Блокировка отсутствующих или неправильных рефереров
            }

            root /var/www/html/phishing;
            index index.html;
        }
       
        # Блокировка ботов и пользователей с другим реферером
        location / {
            if ($http_user_agent ~* "Googlebot|Bingbot|YandexBot") {
                root /var/www/html/safe-content; # Показывается безопасный контент
                index index.html;
            }

            if ($http_referer !~* "company.com") {
                return 403;
            }

            root /var/www/html/phishing; # Показывается фишинговая страница
            index index.html;
        }
    }
}

Пример blacklist.conf (черного списка IP):
Код:
# blacklist.conf
deny 192.168.1.1;
deny 192.168.1.2;
deny 192.168.1.3;
# здесь еще другие IP-адреса

Чтобы было понятнее тем, кто не в теме, краткое описание конфигурации. Ну а спецы и так все знают. ;)

Блокировка ботов:
Директива map используется для определения переменной $bot, которая становится 1, если User-Agent соответствует одному из известных ботов.
В блоке location / используется условие if ($bot) для блокировки доступа ботам.

Черный список IP:
Файл blacklist.conf содержит список IP-адресов, которые будут заблокированы.

Проверка реферера:
Переменная $allowed_referer проверяется в блоке location /, и доступ предоставляется только если реферер соответствует указанному.
В нашем примере это company.com. Если атака таргетированная, то это может быть домен атакуемой компании.
Если ссылка отправлена в личку пользователю в социальной сети, например Linkedin, то ожидаемый переход должен быть с домена linkedin.com

Показ разного контента:
В зависимости от User-Agent или реферера показывается либо безопасный контент, либо целевая фишинговая страница.
Эта конфигурация Nginx позволяет блокировать поисковых ботов, использовать черный список IP-адресов и показывать разные страницы в зависимости от User-Agent и реферера, что помогает скрыть фишинговый сайт от обнаружения.

Продолжение следует.
Будет еще несколько методов.
 
В продолжении темы
Логично, что после Nginx, речь пойдет об Apache mod_rewrite.
С помощью mod_rewrite можно создать правила, которые будут блокировать доступ для нежелательных посетителей, поисковых ботов, и позволять доступ только целевым пользователям.

Пример конфигурации для HTTPS (порт 443)
Код:
<VirtualHost *:443>
    ServerName phishingsite.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/your_cert.crt
    SSLCertificateKeyFile /etc/ssl/private/your_key.key
    SSLCertificateChainFile /etc/ssl/certs/chain.pem

    # Определение цели перенаправления
    Define REDIR_TARGET legitimate_site.com
    RewriteEngine On
    RewriteOptions Inherit

    # Настройка правил для блокировки по IP
    RewriteCond expr "-R '192.168.1.0/24'" [OR]

    # Настройка правил для блокировки по строке пользовательского агента
    RewriteCond %{HTTP_USER_AGENT} ^.*Googlebot.*$ [OR,NC]
    RewriteCond %{HTTP_USER_AGENT} ^.*Bingbot.*$ [OR,NC]
    # Здесь список других юзерагентов

    # Настройка правил для блокировки по DNS-именам
    RewriteCond %{REMOTE_HOST} ^.*.amazonaws.com$ [OR,NC]
    # Здесь список правил для других DNS-имен

    # Перенаправление на другой сайт
    RewriteRule ^.*$ %{REQUEST_SCHEME}://${REDIR_TARGET}/ [QSD,L,R=303]

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Объяснение:

VirtualHost блок:
<VirtualHost *:443> - определяет виртуальный хост, который будет обрабатывать HTTPS-запросы на порт 443.
SSLEngine on - включает SSL.
SSLCertificateFile, SSLCertificateKeyFile и SSLCertificateChainFile - указывают на файлы сертификатов и ключей, необходимые для работы HTTPS.
ServerName phishingsite.com - задает доменное имя сервера.
DocumentRoot /var/www/html - задает корневую директорию веб-сайта.

Определение цели перенаправления:

Define REDIR_TARGET legitimate_site.com - задает цель перенаправления. Это может быть свой или чужой легитимный сайт, хоть Google.
RewriteEngine On - включает механизм перезаписи.
RewriteOptions Inherit - указывает, что параметры перезаписи должны быть унаследованы от вышестоящих конфигураций.

Настройка правил для блокировки по IP:

RewriteCond expr "-R '192.168.1.0/24'" [OR] - блокирует определенные IP-адреса или диапазоны.

Настройка правил для блокировки по строке пользовательского агента:

RewriteCond %{HTTP_USER_AGENT} ^.*Googlebot.*$ [OR,NC] - блокирует запросы от Googlebot.
RewriteCond %{HTTP_USER_AGENT} ^.*Bingbot.*$ [OR,NC] - блокирует запросы от Bingbot.

Настройка правил для блокировки по DNS-именам:
RewriteCond %{REMOTE_HOST} ^.*.amazonaws.com$ [OR,NC] - блокирует запросы с Amazon AWS.

Перенаправление на другой сайт:
RewriteRule ^.*$ %{REQUEST_SCHEME}://${REDIR_TARGET}/ [QSD,L,R=303] - перенаправляет все совпадающие запросы на указанный в REDIR_TARGET сайт (в данном случае legitimate_site.com).
Запрос к [https]://phishingsite.com/ будет перенаправлен на https://legitimate_site.com/.
Запрос к [https]://phishingsite.com/login будет перенаправлен на https://legitimate_site.com/login. и т.д.

Логи:
ErrorLog ${APACHE_LOG_DIR}/error.log - указывает файл для записи ошибок.
CustomLog ${APACHE_LOG_DIR}/access.log combined - указывает файл для записи доступа.

P.S. Это демонстрационный пример. В реальности фишинговый сайт лучше размещать за легитимным сайтом, чтобы
все боты и любопытные посетители попадали на легитимный сайт и только целевые пользователи перенаправлялись на фишинг.
Такой подход продлевает жизнь фишингового сайта, так как даже если редирект по какой-то причине умрет, основной сервер останется активным. В случае блокировки достаточно перенастроить редирект на новом сервере.

Продолжение следует
 
В продолжение темы

Речь пойдет о балансировщике нагрузки HAProxy. Использование HAProxy для скрытия фишингового сайта - это более сложный и эффективный метод, который позволяет контролировать перенаправления и доступ к сайту на уровне сети. Этот метод позволяет скрыть фишинговый сайт от сканеров и ботов, перенаправляя только целевых пользователей на фишинговый сайт.

Опустим описание установки, здесь все стандартно.
Поговорим о настройке HAProxy с использованием правил реферера, отсечением ботов и черным списком IP

Обновление конфигурации HAProxy
1. Добавление правил реферера:
Настройка HAProxy для проверки реферера и перенаправления на фишинговый сайт только при наличии определенного реферера. Это предотвращает доступ ботов, сканеров и разных любопытных личностей.

2. Отсечение ботов:
Можно использовать ACL (Access Control List) для идентификации и блокировки известных ботов по их User-Agent.
Также можно создать список IP-адресов, которые должны быть заблокированы и использовать его в конфигурации HAProxy. Можно запретить трафик из нецелевых стран. Если атака таргетированная, можно запретить все IP, кроме IP сети цели.

Пример конфигурационного файла HAProxy с блокировкой.
Код:
global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_in
    bind *:80
    default_backend servers

    # ACL to detect known bots
    acl is_bot hdr_sub(user-agent) -i googlebot bingbot slurp

    # ACL to block specific IPs
    acl blacklist src -f /etc/haproxy/blacklist.lst

    # ACL to check referrer
    acl has_valid_ref hdr_sub(Referer) -i company.com

    # Block bots
    http-request deny if is_bot

    # Block blacklisted IPs
    http-request deny if blacklist

    # Redirect to phishing site if referrer is valid
    acl phishing_path path_beg /phish
    http-request redirect code 301 location http://phishingsite.com if phishing_path has_valid_ref

backend servers
    server legitimate_site legitimate_site.com:80


Пример конфигурационного файла HAProxy с перенаправлением
Код:
global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_in
    bind *:80
    default_backend legitimate_site

    # ACL для определения известных ботов
    acl is_bot hdr_sub(user-agent) -i googlebot bingbot slurp

    # ACL для блокировки определенных IP
    acl blacklist src -f /etc/haproxy/blacklist.lst

    # ACL для проверки реферера
    acl has_valid_ref hdr_sub(Referer) -i company.com

    # Перенаправление ботов на легитимный сайт
    http-request redirect code 301 location http://legitimatesite.com if is_bot

    # Перенаправление IP из черного списка на легитимный сайт
    http-request redirect code 301 location http://legitimatesite.com if blacklist

    # Перенаправление на фишинговый сайт, если реферер корректен
    acl phishing_path path_beg /phish
    http-request redirect code 301 location http://phishingsite.com if phishing_path has_valid_ref

    # Перенаправление всех остальных на легитимный сайт
    http-request redirect code 301 location http://legitimatesite.com if !has_valid_ref

backend legitimate_site
    server legitimate_site legitimate_site.com:80

backend phishing_site
    server phishing_site phishingsite.com:80


Настройка черного списка IP
Создаем файл /etc/haproxy/blacklist.lst и добавляем в него IP-адреса, которые необходимо заблокировать:
Код:
192.168.1.1
10.0.0.1
203.0.113.5

Перезапуск HAProxy:
Код:
sudo systemctl restart haproxy

Преимущество
Можно настроить HAProxy таким образом, чтобы боты видели один контент по адресу [http]://mysite.com/login.php, а целевые посетители видели другой контент по тому же URL [http]://mysite.com/login.php, т.е. один и тот же домен, один и тот же URL, но разный контент

Будет еще информация по данной теме.
 
Последнее редактирование:
Такими темпами можно будет написать свою клоо для фильтрации ботов и живого трафика

Если необходима фильтрация ботов, то можно использовать отслеживание действий пользователя. Это метод, при котором на страницу добавляется JavaScript код, который следит за действиями пользователя (движениями мышки, кликами и т.д.).

Пример кода на JavaScript
Код:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Фильтрация ботов</title>
    <script>
        let userIsHuman = false;

        function trackMouseMovement() {
            document.addEventListener('mousemove', function () {
                userIsHuman = true;
            });

            document.addEventListener('keydown', function () {
                userIsHuman = true;
            });

            document.addEventListener('click', function () {
                userIsHuman = true;
            });

            setTimeout(checkHuman, 3000); // Проверка через 3 секунды
        }

        function checkHuman() {
            if (!userIsHuman) {
                alert("Access denied. Bot detected.");
                // Тут можно сделать перенаправление или другие действия
            }
        }

        window.onload = trackMouseMovement;
    </script>
</head>
<body>
    <h1>Добро пожаловать на сайт</h1>
    <p>Для просмотра, необходимо взаимодействие со страницей</p>
</body>
</html>

В этом примере отслеживается движения мышки, нажатия клавиш и клики. Если в течение 3 секунд не будет зафиксировано никаких действий, пользователю будет показано сообщение об отказе в доступе.
Этот метод можно использовать разве что, как дополнение к вышеописанным методам, однако здесь есть минусы: возможны ложные срабатывания, т.к. пользователи, которые не взаимодействуют со страницей в течение 3 секунд, могут быть ошибочно определены как боты.
Ну и второе - это неэфективность при отслеживании более сложных ботов, способных имитировать движения мыши и нажатия клавиш.

Если же речь не идет о фишинге, то для базовой фильтрации ботов, этот метод является простым и эффективным решением.
 
Последнее редактирование:


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