Upgrade to Pro — share decks privately, control downloads, hide ads and more …

다크웹 크롤링 엔진 개발기

다크웹 크롤링 엔진 개발기

https://github.com/bunseokbot/darklight
2019 SSG 빵빵빵 내부 세미나 발표용

Kim Namjun

March 16, 2019
Tweet

More Decks by Kim Namjun

Other Decks in Programming

Transcript

  1. 오늘 말할 것 • 다크웹 간단하게 소개 • 크롤링 엔진

    제작기 • 케이스 분석 • 아동 포르노 웹 사이트 운영자 자금 추적 • 다크웹 사이트 관계 분석 방법
  2. 다크웹? • 특정 소프트웨어 (Tor) 나 접속 허가가 있어야만 접속할

    수 있는 사이트 • 불법자료, 개인정보, 무기거래, 청부살인, 성범죄 등의 정보가 있음 • 대놓고 하기에는 법적인 문제가 있는 사이트가 주로 이룸 • 당연하지만 구글, 네이버 등에 검색이 되지 않음
  3. 계기 • Elastic 사의 광고
 “다크웹 정보 수집 방법”에 관한

    글 • 나도 해볼 수 있지 않을까? • 다크웹을 생각보다 해본 사람이 없다 • 언제나 삽질은 welcome
  4. 설계 • 일단 제일 유명한 Tor network 기반으로 작동 •

    도메인 수집 - 크롤링 - 정보 저장까지 모든 프로세스를 자동화 • 말 그대로 엔진의 기능에 충실한 설계 • 최소의 자원으로 최대의 정보를 수집할 수 있는 것에 중점을 둠
  5. Collector • 지금 이 시각에도 수 많은 onion 도메인이 생성되거나

    폐기된다 • 이런 도메인을 수시로 수집해서 넣어줘야 데이터가 풍부해진다 • ?
  6. Collector • collector는 언제든지 추가, 비활성화, 삭제할 수 있습니다 •

    여러분이 원하는 방법으로 수집할 수 있습니다 저장은 알아서 합니다 • 저장과 동시에 crawler에게 job을 던져 줍니다 • 여러분은 그냥 수집만 하세요 그게 편합니다
  7. Crawler • 웹 사이트의 정보를 수집하는 제일 중요한 친구 •

    이 친구 없으면 엔진은 그냥 빛 좋은 개살구
  8. Headless Browser • Graphic User Interface가 없는 Web Browser •

    원래는 웹 사이트 테스트 목적으로 개발됨 • Javascript rendering, CSS 지원되는 머리 없는 브라우저
  9. Screenshot • HTML 코드만 봐서는 어떻게 생긴 웹 사이트인지 알

    수 없다 • 크롤링 시에 스크린샷을 촬영하여 사이트의 전체적인 모습을 알 수 있게 한다 • 단, 불법적인 콘텐츠가 노출되는 웹 사이트 때문에 img 태그에 대해서는 블러링 작업 진행하여 법적인 문제 해결
  10. Port scanner • 엔진에 자체 포트 스캐너 내장 • HTTP,

    SSH, RDP와 같은 well-known 포트에 대해서 오픈 여부만 확인 • 웹 서비스 말고도 다른 서비스가 운영되고 있는지 확인할 수 있음
  11. HAR Log entries • HTTP Archive Log • 아래 이런

    식으로 웹 사이트가 로딩 될 때 어떠한 것을 가져왔는지 알 수 있음
  12. Language Detection • 해당 사이트가 어떠한 언어로 되어있는지 알아야 한다

    • Elasticsearch의 lang-detector와 HTML encoding을 위한 language code
  13. Pipeline • 데이터를 저장하기 전 웹사이트에서 추출 하고자 하는 정보를

    저장할 수 있는 기능 • 사용자가 뽑아내고 싶은 정보를 추출하는 파서를 짜서 올리면 끝!
  14. Pipeline • Google Analytics Key • Site Verification Key •

    Email address • Bitcoin wallet address • PGP Key •
  15. 관리 • 이렇게 열심히 만들면 뭐 하는 가, 쓰기 어려우면

    안된다 (쉽게) • 최대한 많은 플랫폼을 지원해야 한다 • 사용자에 의한 Customization이 활발히 이루어 질 수 있도록 해야 한다 • 읽고 이해할 수 있는 문서화 (위키)
  16. Docker • 컨테이너 기반 오픈소스 가상화 플랫폼 • 윈도우, 리눅스,

    MacOS 모두 사용할 수 있음 (단, Windows는 Hyper-V를 켜야 함)
  17. 케이스 분석 • 직접 개발한 엔진 돌아가는 모습 구경하기 •

    아동 포르노 서비스 운영자 추적 • 딥웹 사이트 관계 분석
  18. DarkLight Engine • 현재 개발은 완료 했으나 테스트 중인 엔진

    모습을 직접 구경시켜 드립니다 • 만우절날 Github을 통해 공개할 예정 • 현재 운영중인 darklight.kr 웹 사이트랑 연동은 계획 예정.. • 지금은 Kibana 페이지로 보여 드립니다
  19. 아동 포르노 서비스 운영자 • 운영자에 대한 비트코인 지갑 주소를

    통해 자금 흐름을 추적한다. • 추적 내용은 아래 사이트에도 같이 올라가 있음. (한국어) • https://iam.namjun.kim/darkweb/2018/09/15/tracking-darkweb-trace-intro/
  20. 비트코인 지갑? • 분산장부라고 하지만.. 이 설명은 건너뛰고 • 그냥

    간단하게 생각하면 여러분의 송금 이체 내역이 세상 모두가 알 수 있습니다. • 누가 만들었는진 모르지만 너의 거래 내역은 모두 알 수 있지 • 그러면 누가 돈을 보냈는지 알 수 있지 않을까?
  21. 결론 • IBAN은 중동, 유럽 지역에서 사용하는 국제공통계좌번호(?)다 • 해당

    거래소는 유로가 기본 화폐 단위다 • 이를 통해 운영자는 유럽 지역 또는 중동 지역에 거주지를 둔 사람으로 추정할 수 있다. • 단, 거래소로 들어간 코인은 협조 없이 누가 출금 했는지 알 수 없다 • 내가 할 수 있는 곳은 여기까지..
  22. 딥웹 사이트 관계 분석 • onion 도메인의 특성 상 생성하는데

    별도의 비용이 발생하지 않음 • 많은 도메인을 통해 다양한 위치의 사용자를 유치하는데 사용함 • 목표: 사이트 운영자가 얼마나 많은 도메인을 가지고 사이트를 운영하는지 알아낸다
  23. 처음엔 • 원래 목표는 코딩 스타일을 검색하는 것.. • 그러나

    이건 거의 불가능에 가까움 (그냥 불가능임) • github, stackoverflow에서 붙여쓰는 경우 그냥 답이 없어짐 • 그래서 목표를 유사 사이트를 찾아 그 유사도를 가지고 엮기
  24. 사이트에 남은 흔적들 • Google Site Verification • Let’s Encrypt

    Site Verification • Google Analytics • Baidu Analytics •
  25. 부록, 웹 사이트 텍스트 추출 • [주의] 아직 완성되지 않은

    기능입니다 • 웹 사이트 내에서 사람에게 보여주는 텍스트를 추출한다 • 단, style, script 등과 같은 tag는 예외처리를 한다 • 현재는 검색 시에 사용하고 있지만 텍스트 유사도도 도입 할 예정
  26. 앞으로의 계획 DarkLight Engine Headless Browser Docker Collector DarkLight Database

    Elasticsearch Docker Pipeline MariaDB DarkLight Web Service Flask Docker Vue.js with TS