본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-
개발

DarkWeb Research [0]

by intadd 2019. 2. 10.




DarkWeb Research [0]



0. 개요

관심이 생기기 시작해서 분석하게된 다크웹 분석입니다.

사실 bunseokbot 선배가 이미 했던 개인 플젝입니다.


파씽해서 대충 재미로 분포나 볼까 했는데 수집한 데이터들도 아깝고 나름 재미있게 작업했던거 같아 포스팅 까지 오게 되었습니다.




1. 분석 환경 


정보를 수집하는 서버 1 (A) 

[Ubuntu16 + Python3]


수집한 데이터를 저장 및 서비스 웹서버 1 (B)

[Ubuntu16 + Apache2 + Mysql]



서버가 굳이 2대가 필요하지 않지만 서버 사양이 안좋아서 2대로 진행했습니다. 



2. 분석 과정


파이썬3을 이용해 Tor 네트워크에 접속해 주기적으로 해당 키워드를 웹엔진들에서 검색 합니다.

필요 모듈들은 Requests, BeautifulSoup4, Socks .. etc (github 참고)



토르는 VPN port를 9050 으로 기본사용합니다. 자동으로 할당 해주는 것으로 아는데

윈도우는 9150 리눅스는 9050 으로 할당 했던거 같습니다. 토르 넽웤에 접속이 아예 안되면 포트를 9050 -> 9150, 9150-> 9050으로 바꿔 보는것도 좋습니다. (확실한 방법은 포트 살아있는지, 그 포트를 tor가 사용하고 있는지 netstat)


Windows에서 python으로 Tor이용하여 request 보낼 때는 반드시 Tor Browser 서비스가 실행되어 있어야합니다.

리눅스의 경우에는 한번 실행하면 계속 데모 형식으로 돌아가서 상관 X


/* 의식의 흐름대로 했던 파씽 방법 셋팅


웹엔진들에서 나온 url들을 분석하기 위해서는 무조건 request를 보내야함 

requests 모듈을 사용해서 기다리니까 살아있는지 죽어있는지 응답코드를 받는 것 조차 오래걸림 .. 끝을 알 수 없는 기다림.. 

requests 모듈의 경우 기본 default time out이 엄청 길고..

심각한 고민..

-> 정확한 분석을 위해서는 모든 URL에 10초를 기다려야하는가.. 아무리 생각해도 오바임.

그래서 건드린 것이 소켓. 소켓 포트 설정하고 (ex 9050) 했는데 나름 서버가 살아있는지 죽어있는지는 알 수 있는데 recv 해서 코드가져와야하는데 이 작업이나 10초 기다리는 시간이랑 비슷하다는 생각이 듬 그러다 문득 생각이 든 것이.

'닼웹 서비스하는 그 서버가 느려서 (vpn영향이겠지만) 서버 자체에서 응답이 느린거 같은데 내가 여기서 resquest 방식을 바꿔 봤자 똑같은거 아닌가?' --> 내생각에는 맞는거 같음

결국 필요없는 소켓을 건들고 있었슴다.


다시 또 심각한 고민 ..

어떻게 하면 좀더 효율적이게 토르넽윀 영향을 줄이고? 살짝 받고 파씽해올 수 있을까..........


하다가 최근에 본 python으로 tor 넽웤 접속하는 예제에서 내머리속에서 

정말 살짝 문득 빠르게 스쳐가는 session(requsts) 기능 

문서 찾아보니까 내가 생각했던 session 그 개념의 session이 맞음 --> ㄱㅇㄷ 

*/


결론은 Python requests 모듈을 활용한 파씽입니다. 

Tor 넽웤에서도 검색 엔진이 있습니다. 예를 들어 인터넷망에서는 Google, Naver .. 등등 

검색 엔진들을 몇개 찾고 검색할 때의 요청 및 응답을 분석해서

원하는 키워드들을 검색해서 결과를 얻는 방식입니다.


'Drug' 를 검색하면 나오는 URL들 --> 중복제거 --> 요청보냄 --> header에서 서버정보 겟 -->

HTML 코드 겟 이정도로 예상하고 있습니다. 









댓글