Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
다크웹 크롤링 엔진 개발기
Search
Kim Namjun
March 16, 2019
Programming
0
22k
다크웹 크롤링 엔진 개발기
https://github.com/bunseokbot/darklight
2019 SSG 빵빵빵 내부 세미나 발표용
Kim Namjun
March 16, 2019
Tweet
Share
More Decks by Kim Namjun
See All by Kim Namjun
크고 깊은 곳으로의 탐험
bunseokbot
0
250
보안 스타트업 분석가가 Django로 웹 서비스 개발하기
bunseokbot
0
80
Other Decks in Programming
See All in Programming
PipeCDのプラグイン化で目指すところ
warashi
1
260
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
700
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
50
32k
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
290
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
350
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
340
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
0
3.2k
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.9k
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
230
Is Xcode slowly dying out in 2025?
uetyo
1
250
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
150
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
3
740
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Music & Morning Musume
bryan
46
6.6k
Side Projects
sachag
455
42k
Fireside Chat
paigeccino
37
3.5k
A Tale of Four Properties
chriscoyier
160
23k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Raft: Consensus for Rubyists
vanstee
140
7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Typedesign – Prime Four
hannesfritz
42
2.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Transcript
다크웹 크롤링 엔진 개발기 김남준 SSG 15
자기소개 • 김남준 • 정보보호학과 15 • 웰비아닷컴 기술개발실 •
https://namjun.kim
오늘 말할 것 • 다크웹 간단하게 소개 • 크롤링 엔진
제작기 • 케이스 분석 • 아동 포르노 웹 사이트 운영자 자금 추적 • 다크웹 사이트 관계 분석 방법
다크웹? 다크웹은 도대체 뭐 하는 친구인가
다크웹? • 특정 소프트웨어 (Tor) 나 접속 허가가 있어야만 접속할
수 있는 사이트 • 불법자료, 개인정보, 무기거래, 청부살인, 성범죄 등의 정보가 있음 • 대놓고 하기에는 법적인 문제가 있는 사이트가 주로 이룸 • 당연하지만 구글, 네이버 등에 검색이 되지 않음
다크웹?
다크웹 크롤링 엔진 제작기 어떻게 크롤링 엔진을 제작하게 되었는가
계기 • Elastic 사의 광고 “다크웹 정보 수집 방법”에 관한
글 • 나도 해볼 수 있지 않을까? • 다크웹을 생각보다 해본 사람이 없다 • 언제나 삽질은 welcome
설계 • 일단 제일 유명한 Tor network 기반으로 작동 •
도메인 수집 - 크롤링 - 정보 저장까지 모든 프로세스를 자동화 • 말 그대로 엔진의 기능에 충실한 설계 • 최소의 자원으로 최대의 정보를 수집할 수 있는 것에 중점을 둠
설계 도메인 수집 Collector 크롤링 Crawler 정보 가공 Pipeline 저장
Database
Collector • 지금 이 시각에도 수 많은 onion 도메인이 생성되거나
폐기된다 • 이런 도메인을 수시로 수집해서 넣어줘야 데이터가 풍부해진다 • ?
Collector • collector는 언제든지 추가, 비활성화, 삭제할 수 있습니다 •
여러분이 원하는 방법으로 수집할 수 있습니다 저장은 알아서 합니다 • 저장과 동시에 crawler에게 job을 던져 줍니다 • 여러분은 그냥 수집만 하세요 그게 편합니다
Collector • github • pastebin • freshonion • Hidden Wiki
• 등등..
Crawler • 웹 사이트의 정보를 수집하는 제일 중요한 친구 •
이 친구 없으면 엔진은 그냥 빛 좋은 개살구
Headless Browser • Graphic User Interface가 없는 Web Browser •
원래는 웹 사이트 테스트 목적으로 개발됨 • Javascript rendering, CSS 지원되는 머리 없는 브라우저
Screenshot • HTML 코드만 봐서는 어떻게 생긴 웹 사이트인지 알
수 없다 • 크롤링 시에 스크린샷을 촬영하여 사이트의 전체적인 모습을 알 수 있게 한다 • 단, 불법적인 콘텐츠가 노출되는 웹 사이트 때문에 img 태그에 대해서는 블러링 작업 진행하여 법적인 문제 해결
Port scanner • 엔진에 자체 포트 스캐너 내장 • HTTP,
SSH, RDP와 같은 well-known 포트에 대해서 오픈 여부만 확인 • 웹 서비스 말고도 다른 서비스가 운영되고 있는지 확인할 수 있음
HAR Log entries • HTTP Archive Log • 아래 이런
식으로 웹 사이트가 로딩 될 때 어떠한 것을 가져왔는지 알 수 있음
Language Detection • 해당 사이트가 어떠한 언어로 되어있는지 알아야 한다
• Elasticsearch의 lang-detector와 HTML encoding을 위한 language code
Pipeline • 데이터를 저장하기 전 웹사이트에서 추출 하고자 하는 정보를
저장할 수 있는 기능 • 사용자가 뽑아내고 싶은 정보를 추출하는 파서를 짜서 올리면 끝!
Pipeline • Google Analytics Key • Site Verification Key •
Email address • Bitcoin wallet address • PGP Key •
Database • Pipeline - MariaDB • Crawler - Elasticsearch
관리 • 이렇게 열심히 만들면 뭐 하는 가, 쓰기 어려우면
안된다 (쉽게) • 최대한 많은 플랫폼을 지원해야 한다 • 사용자에 의한 Customization이 활발히 이루어 질 수 있도록 해야 한다 • 읽고 이해할 수 있는 문서화 (위키)
Docker • 컨테이너 기반 오픈소스 가상화 플랫폼 • 윈도우, 리눅스,
MacOS 모두 사용할 수 있음 (단, Windows는 Hyper-V를 켜야 함)
Kibana • Elasticsearch Visualization 원탑
Github • 현재 모든 개발 내용에 대해 Github Wiki에 정리되어
있음 (영어)
구조 Database Network Docker Elasticsearch DarkLight Network MariaDB Kibana Celery
Redis Collector Crawler
케이스 분석 크롤링 엔진을 통해 알려지지 않았던 사실들
케이스 분석 • 직접 개발한 엔진 돌아가는 모습 구경하기 •
아동 포르노 서비스 운영자 추적 • 딥웹 사이트 관계 분석
DarkLight Engine • 현재 개발은 완료 했으나 테스트 중인 엔진
모습을 직접 구경시켜 드립니다 • 만우절날 Github을 통해 공개할 예정 • 현재 운영중인 darklight.kr 웹 사이트랑 연동은 계획 예정.. • 지금은 Kibana 페이지로 보여 드립니다
아동 포르노 서비스 운영자 • 운영자에 대한 비트코인 지갑 주소를
통해 자금 흐름을 추적한다. • 추적 내용은 아래 사이트에도 같이 올라가 있음. (한국어) • https://iam.namjun.kim/darkweb/2018/09/15/tracking-darkweb-trace-intro/
시작 • 아동 청소년 음란물 사이트를 발견하였다
이 사람들은 뭘로 먹고 살까 • 사이트 한 켠에 위치한
작은 비트코인 주소
비트코인 지갑? • 분산장부라고 하지만.. 이 설명은 건너뛰고 • 그냥
간단하게 생각하면 여러분의 송금 이체 내역이 세상 모두가 알 수 있습니다. • 누가 만들었는진 모르지만 너의 거래 내역은 모두 알 수 있지 • 그러면 누가 돈을 보냈는지 알 수 있지 않을까?
비트코인 지갑?
• 상용 서비스가 있습니다 (비쌈) 근데 누군지 어떻게 아나요?
• chainalysis 출신이 과거에 만들었던 서비스 그러나 우린 언제나 답을
찾죠
검색 해보면..?
그래서 돈은 다 어디로?
거래소 • 가입 시 IBAN (International Bank Account Number) 가
필요한 거래소
결론 • IBAN은 중동, 유럽 지역에서 사용하는 국제공통계좌번호(?)다 • 해당
거래소는 유로가 기본 화폐 단위다 • 이를 통해 운영자는 유럽 지역 또는 중동 지역에 거주지를 둔 사람으로 추정할 수 있다. • 단, 거래소로 들어간 코인은 협조 없이 누가 출금 했는지 알 수 없다 • 내가 할 수 있는 곳은 여기까지..
• 이렇게 3개의 다른 사이트에서 같은 비트코인 주소가 있는 것을
확인할 수 있다 그리고..
딥웹 사이트 관계 분석 • onion 도메인의 특성 상 생성하는데
별도의 비용이 발생하지 않음 • 많은 도메인을 통해 다양한 위치의 사용자를 유치하는데 사용함 • 목표: 사이트 운영자가 얼마나 많은 도메인을 가지고 사이트를 운영하는지 알아낸다
처음엔 • 원래 목표는 코딩 스타일을 검색하는 것.. • 그러나
이건 거의 불가능에 가까움 (그냥 불가능임) • github, stackoverflow에서 붙여쓰는 경우 그냥 답이 없어짐 • 그래서 목표를 유사 사이트를 찾아 그 유사도를 가지고 엮기
웹 사이트 • 일단 자세히 소스코드를 살펴보자
None
사이트에 남은 흔적들 • Google Site Verification • Let’s Encrypt
Site Verification • Google Analytics • Baidu Analytics •
이를 통해서.. • 다른 도메인에 같은 appCode를 사용하는 사이트를 찾을
수 있다
부록, 웹 사이트 텍스트 추출 • [주의] 아직 완성되지 않은
기능입니다 • 웹 사이트 내에서 사람에게 보여주는 텍스트를 추출한다 • 단, style, script 등과 같은 tag는 예외처리를 한다 • 현재는 검색 시에 사용하고 있지만 텍스트 유사도도 도입 할 예정
앞으로의 계획 DarkLight Engine Headless Browser Docker Collector DarkLight Database
Elasticsearch Docker Pipeline MariaDB DarkLight Web Service Flask Docker Vue.js with TS
마지막으로 • 오픈 되면 다크웹 엔진 프로젝트 기여 많이 해주세요
• Pull Request 는 항상 환영합니다
끝
[email protected]