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
19k
다크웹 크롤링 엔진 개발기
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
190
보안 스타트업 분석가가 Django로 웹 서비스 개발하기
bunseokbot
0
74
Other Decks in Programming
See All in Programming
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
1.7k
Honoとhtmx
yusukebe
6
1.2k
TDDと今まで
kanayannet
0
140
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
PRO
1
340
どうしてこうなった命名集 ~🔥編~ / OOC 2024 LT
pictiny
4
2.8k
フロントエンドパフォーマンス 入門
shouta2
7
1.5k
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
720
App Router への移行は「改善」となり得るのか?/ Can migration to App Router be an improvement
takefumiyoshii
1
120
受託開発でGitLab CI を活用していく
xiombatsg
1
110
The Future of C++ Interoperability: Insights from Porting a Game to Swift
teamhimeh
0
270
マイ隙間家具OSSたちのご紹介
karupanerura
2
150
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
110
Featured
See All Featured
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Faster Mobile Websites
deanohume
296
30k
Happy Clients
brianwarren
91
6.3k
Designing for Performance
lara
601
67k
Rails Girls Zürich Keynote
gr2m
91
13k
Scaling GitHub
holman
456
140k
The World Runs on Bad Software
bkeepers
PRO
60
6.6k
Agile that works and the tools we love
rasmusluckow
323
20k
Six Lessons from altMBA
skipperchong
19
2.9k
Building an army of robots
kneath
300
41k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
272
12k
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]