이번에는 이전 글에서 말했듯 릭사이트 파싱 코드의 디테일을 공유하고자 한다.
먼저, 자신이 어떤 릭사이트를 파싱할 것인가를 먼저 선정해야한다. 필자와 팀원들은 릭사이트 소유 단체의 유명세, 규모, 활동성, 릭사이트의 구조, 릭사이트 운영상황 등을 고려하여 [LockBit]을 선정하였다.

LockBit은 랜섬웨어 그룹들 중 굉장히 높은 활동성, 유명세, 규모 등 어디하나 빠지지않는 그룹이다. 그리고 릭사이트에 캡챠 또는 클라우드플레어 등 봇 탐지 시스템이 없어서 따로 우회를 고려해야할 필요가 없다.
이 코드는 아래 기능을 수행한다
Tor 프록시 확인
Selenium을 사용한 데이터 크롤링
Telegram API를 통한 데이터 전송
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가 실행 중인지 확인하고, 실행 중이 아닐 경우 경고 메시지를 출력한다.
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 선택자를 활용한다.
수집된 데이터를 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}")
Python 환경 설정: Python 3.10 이상에서 실행하여야함.
필수 라이브러리 설치: pip install selenium webdriver_manager requests 명령어로 필요한 라이브러리를 설치.
Tor 설정: Tor 브라우저를 설치하고 실행. 기본 설정에서 Tor는 127.0.0.1:9050 포트를 사용.
Telegram API 설정: 봇을 생성하고 API 키와 Chat ID를 입력.
이번 크롤링을 통해서 파싱 사이트 선정부터 코드 제작 및 실행까지 하나의 프로세스를 경험한 것이 굉장히 좋았다. 덕분에 다양한 릭사이트와 포럼들을 돌아다녀볼 수 있었고, 특히 랜섬웨어 그룹들의 동향과 근황들에대해서 뉴스를 많이 접할 수 있어서 좋았던거같다.