문서 기록

2013.04.10 00:41 AM 1 문서 작성 시작

2013.04.10 03:52 AM 1 문서 작성 완료

 

문서 개요

행동 익명화와 익명화에 이용되는 프록시 서버에 대한 개념을 배운 윈도우에서 SSH 터널을 이용하여 프록시를 연결하는 방법을 다룬다.

 

문서 내용

 

행동 익명화

나는 악성 코드를 배포한 공격자라고 하자. 내가 배포한 악성 코드는 금융 기관의 PC들을 공격했고 악성 코드를 배포한 사이트를 수사관들이 살펴보기 시작했다. 그리고 지금 나의 눈에는 특정 기관으로 생각되는 IP들이 사이트에 접속하는 것을 보게 되었다. 나는 지금 수사를 방해하기 위해 어떤 행동을 해야 하는가? 나는 이들을 가지고 놀고 싶다.

 

여러분이 위의 상황이면 어떻게 것인가? 공격자는 특정 IP들에 대해 공격 전략을 바꿔 수사망을 흔들어 놓을 수도 있으며, 웹사이트 자체를 은폐하여 조사를 방해할 수도 있다. 더욱이 IP들에 대해 DDOS 공격을 가해 보복할 수도 있다.

 



 

행동 익명화는 이처럼 신분을 노출시키지 않고 어떠한 작업을 수행하는 것이다. 공격자 또한 행동 익명화를 있으며, 악성코드 연구자 또는 수사관 또한 악성코드를 분석하기 위해 행동 익명화가 필요하다.

 

행동 익명화의 종류는 토르를 이용한 익명 브라우징, 프록시 서버를 이용한 익명 브라우징으로 나눌 있으며 문서에서는 프록시 서버를 이용한 익명 브라우징을 주된 내용으로 다룬다.

 

*그림 출처 : http://blog.daum.net/fidesmd2/171

 

프록시 서버

프록시 서버는 일반적으로 클라이언트와 서버 사이에 중간자 시스템으로 설계되었고, 대역폭 절감, 콘덴츠 필터링 등을 위해 흔히 사용된다. 하지만 인터넷에서 익명성을 보장하기 위한 목적으로도 사용된다.

  흔히 프록시 서버는 토르와 비교되는데, 이들의 가장 차이는 프록시 서버는 서버 자체에서 요청한 클라이언트를 있다는 것이고 토르의 최종 노드에서는 요청한 클라이언트를 모른다는 것이다.

 

 


 

  이러한 요청한 클라이언트를 아는 프록시 서버의 특성 때문에 프록시의 유형은 투명한 프록시, 익명성을 보장하는 프록시, 매우 높은 익명성을 보장하는 프록시로 나뉜다.

 

  • 투명한 프록시 : 요청 클라이언트의 정보를 HTTP 추가 헤더를 설정하여 서버에 전송한다.
  • 익명성을 보장한 프록시 : 요청 클라이언트의 정보를 서버에 보여주지는 않지만, 프록시를 통해 전송되었다는 정보를 포함한다.
  • 높은 익명성을 보장하는 프록시 : 대상 서버에 어떠한 정보도 제공하지 않는다. 서버는 프록시를 통해 전송되었다는 정보를 없다.

 

 

윈도우에서 SSH 터널 프록시 사용

프록시로 연결하는 방법 가장 좋은 방법은 SSH 터널을 통해 포트를 포워딩하는 방식이며, SSH 터널은 사용자 PC 포트를 오픈하여 SSH 통해 서버로 연결한 서버를 SOCKS4/5 프록시로 사용할 있게 한다.

 

인터넷 어플리케이션을 SSH 터널을 통해 프록시하는 데는 다음과 같이 4가지 이유가 있다.

 

  • 보안 : 사용자와 서버 사이의 로컬 트래픽이 암호화된다.
  • 프라이버시 : 사용자의 실제 IP 주소를 감춘다.
  • 기술적 이유 : 다른 장소에서 IP 기반 인증 메커니즘을 사용하는 어플리케이션에 접근해야할
  • 그리고 그냥.. 가능하니까 :)

 

그렇다면 어떻게 서버를 통해 프록시 연결을 하는 것인가?

 

SSH 프록시 서버 사용을 위한 준비물은 다음과 같다.

  • 사용할 있는 SSH 프록시 서버
  • Putty
  • 브라우저(IE, FireFox )

 

*직접 SSH 프록시 서버를 구축해서 실습을 해야한다면 SSH 프록시 서버 구축을 위해 "How to setup an SSH Proxy Server using Putty and Spoon Proxy" 참조하기 바란다. 필자는 직접 SSH 프록시 서버를 구축하였으며, 아래 내용은 해당 서버를 이용한 정보이다.

 

Putty 실행하면 다음과 같은 설정창을 보게 된다.

 



 

  • Host Name : SSH 프록시 서버의 주소를 적는다.
  • Port : 서버에서 지원하는 SSH 포트 번호(일반적으로 22) 적는다.
  • Connection type : SSH 설정한다.

 

* 이후 계속 사용하기 위해서 세션에 대한 정보를 저장해 둔다. 여기서는 SSH TEST 저장한다.

 

Connection -> SSH 누르면 SSH 세팅 정보가 나오며 다음과 같이 설정해 준다.

 


 

  • Enable Compression 체크
  • Preferred SSH protocol version : SSH 서버에서 지원하는 버전으로 설정(일반적으로 2 설정)

 

Connection - SSH - Tunnels 누르면 SSH 터널에 대한 설정을 해줄  있다.



  • Source port : 사용자의 PC에서 사용되지 않는 포트 번호를 적는다. 여기서는 4567 적었다.
    포트는 사용자 PC에서 프록시 서버 포트로 사용될 , SSH 터널로 포워딩될 포트이다.
  • Dynamic, Auto 설정해준다.

 

Add 누르면 입력한 포트번호가 다음과 같이 포워딩된 포트 목록에 추가된다.

 

 

이제 설정이 모두 완료되었다.

다시 Session 눌러 설정한 세션 정보를 저장한다.

 

 

저장된 세션에 접속하고 서버에서 제공한(또는 설정한) 계정명과 비밀번호를 입력하면 다음과 같이 접속하게 된다. Putty 통해 SSH 프록시 서버를 사용하기 위해서는 반드시 서버에 로그인 상태여야 한다.

 

 

서버에 로그인된 상태에서

파이어폭스 - 설정 - 고급 - 네트워크 - 연결란의 설정을 누르고 다음과 같이 설정해준다.

 

 

*필자는 IE에서 먼저 시도해보았으나 SOCKS 프로토콜 사용이 원활히 진행되지 않아 파이어폭스에서 진행하였다.

 

접속 IP 확인해보면 외부에서 확인한 필자의 IP 실제 PC에서의 IP 다르단 것을 확인 있다.

 

 

마치며

일단 문서에서는 '높은 익명성을 보장하는 프록시' 대한 증명을 전혀 하지 않았다. 점에 대해서는 추후 문서에 추가할 예정이다.

  필자는 행동 익명화에 대해 공부하기 전에는 단순히 공격자만이 행동 익명화를 요구하는지 알았으나 수사관 또한 공격자의 감시를 피하기 위해 행동 익명화가 요구된다는 사실을 알게 되었다. 이를 포함한 많이 부족한 지식을 조금이라도 채워준 저자들에 대해 감사를 표한다.

 

참조

Malware Analyst's Cookbook and DVD, p10-17

Proxy Connections With SSH or PUTTY

(http://www.webhostingtalk.com/showthread.php?t=539067)

How to setup an SSH Proxy Server using Putty and Spoon Proxy

(http://www.pccured.com/blog/how-to-setup-ssh-proxy/)

Putty 0.60(r3) (http://www.chiark.greenend.org.uk/~sgtatham/putty/)

'Analysis > Reverse Engineering' 카테고리의 다른 글

자식 프로세스 디버깅하기  (0) 2012.09.08
AND