본문 바로가기

해커의 언어, 치명적 파이썬

6장 정보수집

MECHANIZE 라이브러리로 인터넷 검색하기


외부 라이브러리 Mechanize는 http://wwwsearch.sourceforge.net/mechanize/ 에서 다운로드할 수 있다. Mechanize의 주요 클래스인 Browser는 브라우저에서 조작할 수 있는 모든 부분을 파이썬에서 조작할 수 있게 한다.

뭐 어떻게 하다보니까 다운로드가 됐다. 역시 사람은 노력을 해야한다.

viewPage.py

Mechanize로 웹 사이트의 소스코드를 가져오는 스크립트이다.

결과

HTML 코드와 www.syngress.com 의 인덱스 페이지를 출력하는 것을 볼 수 있다.

 

 

익명유지 - 프록시, User-Agent, 쿠키 추가하기

 

->웹 서버가 사용자 식별 위해 요청의 IP 주소를 기록(이는 사용자가 VPN이나 Tor 네트워크를 사용하면 완화 가능)

->클라이언트가 VPN에 연결, 모든 트래픽이 자동으로 VPN 경유 하여 전송

->파이썬 프록시 서버에 연결

->추가적인 익명성 확보!

 

Mechanize의 Browser 클래스에 프록시 서버를 설정할 수 있지만 단순히 브라우저의 프록시를 설정하는 것은 충분하지 않다. 온라인에 있는 여러 무료 프록시 중에 책에서 사용하는 것은 http://www.hidemyass.com/ 에 있는 HTTP 프록시이다.

 

proxyTest.py
결과

으아악. 넘어가도록 하자.

userAgentTest.py

웹 사이트는 브라우저의 user-agent 문자열로 사용자를 식별하기도 한다. 여기에는 커널 정보, 브라우저 버전, 사용자에 대한 다른 정보도 포함될 수 있어, 악의적으로 사용되면 해당 브라우저에 가장 적합한 공격코드를 식별하는 데 사용될 수 있다.

결과

예상된 결과이다. 이 스크립트가 성공저그로 실행되면 스푸핑한 user-agent로 검색을 할 수 있다는 것을 확인할 수 있다.

printCookies.py

웹 사이트들은 브라우저의 쿠키를 사용해 사용자를 식별하기도 한다. 이를 방지하기 위해 핵심 파이썬 패포하에 포함되어 있는 Cookielib을 통해 다른 anonymize 함수를 수행할 때 쿠키를 브라우저에서 삭제한다.

결과

된건가..?

 

 

파이썬 클래스에서 AnonBrowser 최종화하기

Mechanize의 Browser 클래스를 확장하여 browser를 인자값으로 받아 수정하는 함수를 추가하여 사용시 매번 임포트하는 수고를 덜어보겠다. 이렇게하면 코드의 가독성에 도움이 되며 Browser 클래스를 직접적으로 처리하는 모든 함수르 한 곳에 정리할 수 있게 해준다.

anonBrowser.py

anonymize 함수에서 60초를 기다리는 옵션은 서버 로그의 요청 사이 간의 시간을 증가, 동일한 출처에서 활동이 발생하고 있다고 인지할 가능성을 감소시키는 효과가 있다.

kittenTest.py

http://kittenwar.com 을 속여 방문할 때마다 고유한 쿠키를 얻을 수 있는 스크립트이다.

결과

실행하면 방문할 때마다 서로 다른 PHP 세션을 가져온 것을 볼 수 있다.

 

 

 

ANONBROWSER로 웹 페이지 정보 수집하기


Beautiful Soup으로HREF 링크 처리하기

 

웹사이트의 링크를 처리하기 위한 두 가지 방법:

- HTML 코드에서 찾기 및 바꾸기를 하기 위해 정규표현 사용하기

- http://www.crummy.com/software/BeautifulSoup/ 에서 다운로드할 수 있는 BeautifulSoup이라는 외부 라이브러리 사용하기

 

linkParser.py
결과

안된다! 왜 없다는걸까?

다운로드가 된걸까..?

왜 저럴까?

그냥 넘어가도록 하자.

BeautifulSoup 다운이 안되기 때문에 다음 절인 'Beautiful Soup으로 이미지 미러링하기'는 생략한다.

 

 

연구, 조사, 발견


파이썬에서 구글 API 사용하기

구글에서 제공하는 API는 일반적인 구글 인터페이스를 사용하지 않고도 쿼리를 구글에 전송하여 결과를 받을 수 있도록 해준다.

 

googlemoya.py
결과

is no longer available. 하하하.

 

json 라이브러리는 문자열을 수작업으로 처리하는 대신, 딕셔너리에 응답을 로드해 필드를 손쉽게 접근할 수 있게 만든다.

같은 결과가 출력된다.

 

 

파이썬으로 트윗 처리하기

twitterRecon.py
결과

뭐가 문제일까?

 

 

트윗에서 데이터 가져오기

twitterGeo.py
결과

책과 똑같이 작성했는데 줄바꿈이 좀 이상한 것 같다.

 

정규표현으로 트위터의 관심 사항 추출하기

twitterInterests.py
결과

대차게 실패! 하지만 기 죽지 않는다.

 

 

 

익명의 이메일


Smtplib로 공격대상에 이메일 전송하기

sendMail.py
결과

이 스크립트를 사용하기 위해서는 구글의 Gmail 계정을 생성하든지 자체 SMTP 서버에서 사용할 수 있도록 설정을 수정해야 한다.

'해커의 언어, 치명적 파이썬' 카테고리의 다른 글

5장 무선 기기 해킹  (0) 2020.03.22
4장 네트워크 트래픽 분석  (0) 2020.03.15
3장 포렌식 수사  (0) 2020.03.15
2장 침투 테스트  (0) 2020.03.13
1장 소개  (0) 2020.03.13