랜섬웨어 릭사이트 파싱

Hae_To·2025년 1월 22일

이번에는 이전 글에서 말했듯 릭사이트 파싱 코드의 디테일을 공유하고자 한다.

릭사이트 선정

먼저, 자신이 어떤 릭사이트를 파싱할 것인가를 먼저 선정해야한다. 필자와 팀원들은 릭사이트 소유 단체의 유명세, 규모, 활동성, 릭사이트의 구조, 릭사이트 운영상황 등을 고려하여 [LockBit]을 선정하였다.

LockBit은 랜섬웨어 그룹들 중 굉장히 높은 활동성, 유명세, 규모 등 어디하나 빠지지않는 그룹이다. 그리고 릭사이트에 캡챠 또는 클라우드플레어 등 봇 탐지 시스템이 없어서 따로 우회를 고려해야할 필요가 없다.

Lockbit 랜섬웨어 그룹 크롤러: 기능과 활용

코드의 주요 기능

이 코드는 아래 기능을 수행한다

  1. Tor 프록시 확인

    • 다크웹에 접근하기 위해 Tor 네트워크가 활성화되었는지 확인.
    • Tor가 실행되지 않았을 경우 사용자에게 알림을 제공.
  2. Selenium을 사용한 데이터 크롤링

    • Lockbit의 onion 사이트에 접속하여 피해자 목록을 수집.
    • 사이트 구조를 분석하여 데이터를 효율적으로 추출.
  3. Telegram API를 통한 데이터 전송

    • 수집된 피해자 목록을 Telegram 봇을 통해 실시간으로 공유.

주요 코드 설명

1. Tor 프록시 확인

Tor 프록시를 통해 다크웹에 접속하려면 연결 상태를 확인해야한다.

import socket

def check_tor_proxy():
    try:
        with socket.create_connection(("127.0.0.1", 9050), timeout=5):
            print("Tor proxy is running on 127.0.0.1:9050")
            return True
    except Exception as e:
        print("Tor proxy is not running. Please start the Tor service.")
        return False

위 함수는 Tor가 실행 중인지 확인하고, 실행 중이 아닐 경우 경고 메시지를 출력한다.

2. Selenium을 활용한 크롤링

Selenium은 다크웹 페이지의 동적 요소를 처리하고 데이터를 수집하는 데 사용된다.

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

def main():
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--proxy-server=socks5://127.0.0.1:9050")
    chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0")

    driver = webdriver.Chrome(service=webdriver.chrome.service.Service(ChromeDriverManager().install()), options=chrome_options)

    base_url = "http://lockbit3753ekiocyo5epmpy6klmejchjtzddoekjlnt6mu3qh4de2id.onion"

    driver.get(base_url)
    time.sleep(5)

    sendMessage = ''
    for i in range(1, 17):
        try:
            title = driver.find_element("xpath", f'/html/body/div[3]/div[1]/div/a[{i}]/div[1]/div/div/div[1]')
            sendMessage += title.text + '\n'
        except Exception as e:
            print(f"Error parsing element {i}: {e}")

    driver.quit()

위 코드는 Lockbit 사이트에 접속한 후 피해자 목록 데이터를 추출한다. 크롤링 과정에서 동적 데이터를 처리하기 위해 Selenium의 xpath 선택자를 활용한다.

  • xpath: HTML문서의 상대경로 혹은 절대경로를 기준으로 요소에 접근할때 활용됨. 다만, 페이지가 동적이거나, 구조가 변경될시 작동하지 않으며, 너무 다량의 요소에 접근하려하면 성능이 떨어지는 단점이 있음

3. Telegram으로 데이터 전송

수집된 데이터를 Telegram API를 통해 전송하여, 팀원들과 실시간으로 공유할 수 있음.

import requests

def send_message(text):
    api_key = "YOUR_API_KEY"
    chat_id = "YOUR_CHAT_ID"
    send_message_api = f"https://api.telegram.org/bot{api_key}/sendMessage"

    try:
        response = requests.post(
            url=send_message_api, data={"chat_id": chat_id, "text": text}
        )
        print("Message sent:", response.status_code)
    except Exception as e:
        print(f"Error sending message: {e}")

실행 방법

  1. Python 환경 설정: Python 3.10 이상에서 실행하여야함.

  2. 필수 라이브러리 설치: pip install selenium webdriver_manager requests 명령어로 필요한 라이브러리를 설치.

  3. Tor 설정: Tor 브라우저를 설치하고 실행. 기본 설정에서 Tor는 127.0.0.1:9050 포트를 사용.

  4. Telegram API 설정: 봇을 생성하고 API 키와 Chat ID를 입력.


이번 크롤링을 통해서 파싱 사이트 선정부터 코드 제작 및 실행까지 하나의 프로세스를 경험한 것이 굉장히 좋았다. 덕분에 다양한 릭사이트와 포럼들을 돌아다녀볼 수 있었고, 특히 랜섬웨어 그룹들의 동향과 근황들에대해서 뉴스를 많이 접할 수 있어서 좋았던거같다.

profile
진인사대천명

0개의 댓글