IT_잡담2023. 12. 22. 12:06

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/559931 (2015.8.22)

며칠전에 안철수 의원이 이끄는 국민정보지키기 위원회의 해킹팀 유출자료 자체조사 결과 발표가 있었다.

이전에 해킹팀 탐정놀이를 하면서 해킹팀 유출 관련 언론 기사의 판타지적 요소에 실망이 컸던 만큼, 이번 발표에는 뭔가 제대로 된 것이 나오지 않을까 하는 기대를 가지고 굳이 시간을 내서 챙겨 보았다. 해당 발표 전체를 팩트TV에서 동영상으로 유튜브에 게재해 놓았기 때문에 누구나 볼 수 있다.

https://youtu.be/n2RPVcOv6jQ

(백업하는 현 시점에서 해당 동영상은 비공개처리 되어 있다.)

정치적인 논의에는 별 관심이 없어서 그냥 다 넘기고 유출자료 설명 부분만 보았는데, 유출자료에서 KT가 소유한 국내 IP주소 3개가 발견되었다는 것이 요지다.

3개 IP주소가 국내 주소이기 때문에 국정원이 내국인 PC를 해킹했음이 분명하다고 주장을 했는데, 일단 최소한 IP주소 1개는 명백하게 뭔가 좀 이상하다. -_-;
 
이번 발표에서 국민정보지키기 위원회는 국내 IP주소가 유출자료중 구체적으로 어디에서 발견되었는지 명확하게 제시하지 않았다. 유출자료에서 직접 보여준 것이 아니라 별도로 만들어 놓은 디렉토리 안에 파일을 따로 모아 놓고 이 파일들을 열어서 보여주고 있다. 시간관계상 또는 편의상 그렇게 한 것인지 모르겠으나 어쨌든 직접 찾아보기도 귀찮으니, 해당 IP주소가 진짜로 유출자료 안에 있었다고 일단 믿고 넘어가자.

팩트TV의 유튜브 동영상에서 18분 59초 부근을 보면 첫번째 국내 IP주소가 보인다. 웹서버를 좀 만져본 사람이라면 금방 알아챘겠지만, 이 유출자료는 웹서버의 접속 로그(access log)다.


동영상의 21분 17초 부근에서도 동일한 IP주소가 나오는 로그를 보여준다. IP주소는 121.160.164.186, KT가 소유하고 있다.

로그 내용은 아래와 같다.

유튜브 동영상 18분 59초
121.160.164.186 - - [21/Jul/2013:00:44:51 +0800] "HEAD / HTTP/1.0" 403 - "-"

유튜브 동영상 21분 17초
121.160.164.186 - - [17/Aug/2013:23:41:31 -0400] "HEAD / HTTP/1.0" 403 - "-" "-"

2013년 7월 21일과 8월 17일, 2회에 걸쳐 접속이 있었다. 그런데 요청 메소드(request method)가 뭔가 좀 이상하다. GET이 아니라 HEAD다. 클라이언트가 웹서버에 웹페이지 또는 파일을 보내달라고 요청할 때 사용하는 메소드는 GET이어야 한다.

HEAD 메소드는 클라이언트가 웹서버에 응답을 요청할 때, 실제 내용물은 제외하고 HTTP 헤더(header)만 보내라는 뜻이다. 즉, 웹페이지나 파일 자체를 아예 안 받겠다는 얘기다. 악성코드를 내려받기 위해 HEAD 메소드로 접속하는 스파이웨어는 없다. HEAD 메소드로 접속하면 아예 파일이 안 내려오기 때문이다. -_-;

HEAD 메소드는 웹개발자/관리자가 특정 URL이 유효한지 확인하는 등 웹서버를 테스트하거나, 또는 해커가 웹서버를 공격할 때 GET/POST 메소드에 대한 보안 정책을 우회하기 위해서 사용할 수 있는 메소드다. 통상적인 클라이언트-서버 통신에서는 나올 일이 없다.

좀 더 살펴 보자. 접속 URL은 "/", 해당 웹서버에 접속하면 처음 나오는 페이지, 즉 대문 페이지다. 해킹팀 고객이 한두명이 아닐텐데, 그중 한명이 사용한 특정 스파이웨어가 받아갈 악성코드를 웹서버 대문 페이지에 올려둘 리가 없다. 해킹팀 엔지니어의 지능지수가 80 이상임을 전제로 한다.

접속 요청에 대한 응답 코드는 403이다. 웹브라우저로 보면 통상 "403 Forbidden"이라고 나온다. 해당 URL에 대한 접속 권한이 없으니 차단하겠다는 응답이다.

동영상을 보면 이 IP주소에 대해 설명하면서 "RCS를 이용하여 국내 PC를 해킹 시도하였으나 뭔가 문제가 발생해서 악성코드가 다운로드되지 않았다"는 취지로 얘기하고 있는데, 정작 로그의 내용은 해당 웹서버의 대문 페이지에 접속하면서 응답 헤더만 요청한 것이다. 전혀 앞뒤가 맞지 않는다.

KT 소유 IP주소 121.160.164.186에 관련된 로그는 해킹팀 RCS를 이용한 사이버 공격에 의한 것이 아니다.

나머지 두개 IP주소도 마찬가지로 웹 접속 로그에서 보이고 있는데, GET 메소드를 사용한 정상적인 접속 시도이므로 위와 같이 간단하게 검증할 수 있는 사안은 아니다. 다만, 이전에 SK텔레콤 IP주소가 나왔을 때와 마찬가지로 이번에도 IP주소의 수가 너무 적어서 자체적으로 시험하는 과정에서 국내 IP주소가 로그에 남았다고 해도 크게 이상해 보이진 않는다는 것이 문제(?)라고 해야 되나;;

728x90
Posted by 반달가면
IT_잡담2023. 12. 22. 12:02

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/557553 (2015.7.26)

이것은 객관적인 검증이라기보다는 주관적인 추측의 성격이 더 크다. 그래서 탐정놀이가 아니라 외전(外傳)이다.

해킹팀 유출 자료중에 있는 서버 로그에서 SK 텔레콤 소유의 IP주소 5개가 나왔다고 한다. SK 텔레콤 가입자가 해킹 당했으니 이것이야말로 국민 사찰의 증거라는 분위기를 풍기는 기사들이 여러개 있었다.

객관적으로 확인할 수는 없으나 개인적으로 추측을 좀 해 보자면, IP주소의 수가 너무 적다는 느낌이 든다. 어딘가에서는 구입한 라이센스는 20회선이지만 대상을 바꿀 수 있기 때문에 수천명도 사찰할 수 있다는 식으로 기사가 나왔던데, 로그에 나온 국내 IP주소는 5개. 해킹 대상에 국내 IP주소가 나왔다는 것 자체가 뭔가 이상한 것 아니냐고 생각하기 전에, 아래의 문제를 풀어 보자. IT 관련 전공자이거나 관련 업계에서 일하고 있다면 전혀 어렵지 않다.

문제1. 해킹팀이 새로운 익스플로잇을 출시했다. 가장 먼저 할 일은?
  1) 대상자 공격(해킹팀이 만든 코드는 완벽하므로 버그가 있을 수 없다)
  2) 시험(제대로 동작하는지 확인하려고 가지고 있는 시험용 스마트폰을 해킹해 본다)

문제2. 제조사에서 새 모델을 출시, 또는 기존 모델의 업그레이드된 펌웨어를 공개했다. 어떻게 해야 할까?
  1) 대상자 공격(펌웨어 버전이 무슨 상관이냐!)
  2) 시험(새 모델 또는 업그레이드된 펌웨어에서도 제대로 동작하는지 확인하려고 시험용 스마트폰을 해킹해 본다)

문제3. 실제로 공격을 감행하기 전에 시험은 몇번이나 해야 할까?
  1) 한번
  2) 대상 스마트폰 모델별, 펌웨어 버전별로 최소 한번 이상
  3) 대충 1,356번;;

정신이 나가지 않은 다음에야, 실제로 공격을 하기 전에 자신이 가지고 있는 시험용 스마트폰에서 예행연습을 해야 한다. 그러므로 시험용 스마트폰의 IP주소와 실제 공격한 국내 스마트폰의 IP주소를 합해서 5개 IP주소라는 셈이 되는 것 같은데, 5개면 어째 시험하기에도 부족할 것 같다;;

하나만 더 생각해 보자.

문제4. 해킹팀 서버 로그에 SK 텔레콤 소유의 IP주소가 나왔다. 누구일까?
  1) 내국인(외국인은 SK텔레콤 가입이 불가능하다)
  2) 외국인(내국인은 SK텔레콤 가입이 불가능하다)
  3) 그것만으론 알 수 없다(내국인/외국인 모두 SK텔레콤 가입이 가능하다. 게다가 SK텔레콤은 국제 로밍 서비스도 제공한다)

모범답안 및 해설은 생략한다.

728x90
Posted by 반달가면
IT_잡담2023. 12. 22. 11:59

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/557448 (2015.7.25)

(백업하면서 위키리크스의 링크가 사라질 것에 대비해 본문에 언급된 이메일을 pdf로 첨부했다.)



호기심으로 해킹팀 탐정놀이 몇번 하다가 오히려 언론에 대한 불신감이 급상승하던 차에, 뭔가 색다른(?) 기사를 발견했다.

[단독] 허손구 나나테크 대표 “국정원 주 타깃은 중국 내 한국인”

이 기사를 보면 7월 21일 인터뷰에서 얼마전에 숨진 국정원 직원이 나나테크 대표에게 "중국에 있는 내국인"이 공격대상이라고 밝혔다는 얘기가 나온다. 기사 내용이 맞다면, 해당 국정원 직원은 나나테크 대표에게 내국인 해킹을 수행한다면서 명백한 범죄사실을 알려 주었고 나나테크는 이런 얘기를 듣고도 그냥 계속 하던대로 사업을 했다는 얘기다. 엄청나다! -_-;

그리고 나서 기사 중간에 "인터뷰 전문"에 대한 링크가 아래와 같이 나온다.

허손구 나나테크 대표 “관련된 국정원 직원 5명 안팎…그들 관심은 휴대폰”

그런데 인터뷰 전문에서 나나테크 대표는 그 어디서도 대상이 "한국인"이라는 언급을 하지 않는다. RCS 구성상 무차별적 감청은 거의 힘들다는 점과 대상이 중국에 있다는 얘기는 있다. 전문(全文)이라고 했으면 인터뷰 내용 전체라는 뜻일텐데, 인터뷰를 근거로 나온 기사와 링크되어 있는 인터뷰 전문의 내용이 앞뒤가 맞지 않는다. 설마 한자가 다른 전문인가;;; -_-; 뭔가 좀 이상하긴 한데 인터뷰 당사자가 아닌 이상 뭔가 더 할 수 있는 것이 없어 보이니 일단 넘어가자.

그 다음 얘기를 보자. 해킹팀 서버에 "Decoy page displayed"라는 표시와 함께 4개의 국내 IP주소가 발견되었다는 내용이다. 그러면서 국내 유선통신망 사용자가 해킹 당했거나 해당 IP주소를 가지고 있는 공유기에 와이파이로 접속한 스마트폰이 해킹당했을 수 있다는 내용이 나온다.

언론에 대한 신뢰를 회복할 좋은 기회일 수도 있을 듯해서, 좀 귀찮지만 탐정놀이를 한번 더 해 보았다.

우선 해킹팀 RCS에서 "Decoy page"가 무엇을 의미하는지 찾아보았다. 위키리스크에서 검색해 보니 해킹팀측이 데빌엔젤에게 설명한 내용중에도 나온다. 원문은 여기로.

ht77105.pdf
0.13MB


RCS 버전 9.2에서 변경된 부분을 설명하고 있는데, decoy page 관련 내용을 번역하자면 아래와 같다.

9.2에서 변경된 부분:
우리는 인증서에 대한 접근과 "decoy page"를 제거했다.
agent(스파이웨어)가 아닌 다른 클라이언트의 접근(access from non-agents)이 있을 경우 방화벽이 탑재된 대다수 호스트와 마찬가지로 연결 초기화(connection reset) 또는 연결 시간 초과(timeout)를 야기한다.
응답시간을 기반으로한 추적을 피하기 위해 응답시간은 무작위로 정해진다.
anonymizer를 다른 VPS와 구분하기는 불가능하다.

무슨 얘기냐 하면, 예전 버전에서는 anonymizer에 비인가 접속을 할 경우 decoy page가 표시되었으나 9.2 이후부터는 connection reset/timeout으로 바꿨다는 얘기다.

메일을 하나 더 살펴보자. 독일인(.de 도메인 이메일 주소 사용)으로 보이는 고객이 해킹팀에 보낸 이메일이다. 원문은 여기로. RCS 설정과 관련해서 제대로 동작이 안되어 도움을 요청하는 메일이다. 아래와 같은 내용이 나온다.

ht967973.pdf
0.14MB


- 유효한 동글(dongle)과 라이센스를 탑재한 윈도우2008R2에 RCS를 셋업했다. (웹브라우저에서 localhost에 접속하면 decoy page가 표시된다.)
- 우분투 10.04LTS 기반의 서버(vps)를 임대했다.
- vps의 OpenSSH 서버의 포트를 12345로 설정하고 설정 파일(sshdconfig)에서 TCPPortForwarding을 활성화했다.
- putty를 설정했다. 첨부한 스크린샷을 보기 바란다.
- 이제 putty에서 연결을 하고 다른 PC의 웹브라우저에서 서버(원문엔 vpn이라고 적혀 있는데 vps의 오타임이 분명해 보인다)의 공인 IP주소로 접속하면 decoy page가 표시되어야 하는데 그게 안되고 있다.

이게 무슨 얘기냐 하면 anonymizer를 제대로 설정했을 경우 일반 웹브라우저로 접근할 경우 - 즉 agent(스파이웨어)가 아닌 클라이언트가 접속할 경우 - 비인가 접속으로 간주되어 decoy page가 표시되어야 한다는 얘기다. 이 고객은 anonymizer를 설정한 후에 제대로 동작하는지 시험하는 차원에서 일부러 일반 웹브라우저로 접속을 해서 decoy page가 잘 나오는지 확인하고 있다.

이것 말고도 위키리크스를 검색하면 "Decoy page displayed" 메세지가 포함된 서버 로그가 담겨 있는 메일도 여러개 나오는데, 해킹에 성공했다는 내용이 아니라 뭔가 문제가 있으니 로그를 보고 좀 해결해 달라는 식이다.

따라서 서버의 로그에 "Decoy page displayed"라는 메세지가 있고 이 메세지에 한국 IP주소가 나와 있다면 십중팔구 둘 중 하나다.

1. 해당 IP주소에서 RCS와 연동되는 anonymizer 서버에 비인가 접속을 시도했다. 또는 anonymizer의 정상 동작 여부를 확인하기 위해 일부러 비인가 접속을 해 보았다. 이쪽이 사실일 가능성이 훨씬 높다고 생각된다. 기사에 의하면 해당 로그가 2012년 11월부터 2013년 2월 사이에 있다고 하는데, 그 시기면 RCS를 제대로 운영할 준비가 되어 있지 않은 것으로 보이기 때문이다. (이전 게시물을 참고하자. 여기로)

2. (백번 양보해서 미친 척하고) 공격을 감행하였으나, 스파이웨어(agent)가 제대로 설치되지 않았다. 따라서 anonymizer는 해당 접속 시도를 비인가 접속으로 간주했으며, decoy page를 표시하고 끝냈다.

둘 중 어느쪽이었는지 100% 확신하려면 해당 로그를 더 자세히 봐야 실마리가 있을 듯하다. 그 문제의 로그가 어디 있는지, 한국 IP주소가 무엇인지는 아직 모르겠지만;;

아무튼 해당 신문기사에서는 decoy page를 "유인용 페이지"라고 번역했는데, 이건 대상자를 해킹하기 위한 페이지가 아니라 불청객으로부터 RCS 서버를 숨기기 위한 "위장용 페이지"다.

아쉽지만 신뢰 회복은 실패인 듯하다. -_-;;

728x90
Posted by 반달가면
IT_잡담2023. 12. 22. 09:13

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/556921 (2015.7.20)

(백업하는 현 시점에서 유출 파일 미러링 사이트는 사라진 듯하다.)

해킹팀 탐정놀이는 이쯤에서 접을까 했는데, 뭔가 좀 심하게 판타지적인(?) 느낌을 주는 기사들이 보여서 한번 더 탐정놀이 -_-; 아무래도 뭔가 연재만화 비슷하게 되어 가는 느낌이다;;; (지난회는 여기와 여기로;;)

대략의 내용은, 해킹팀 유출자료에서 로그 파일에서 한국 IP주소 138개가 발견되었기 때문에 "대북/해외정보 수집용"이라는 국정원의 해명이 거짓말이라는 취지다. 문제가 된 파일은 log.csv, log(2).csv 이렇게 2개.

자, 그러면 해킹팀 유출자료에서 이 문제의 파일을 한번 찾아보자. 위키리크스는 이메일만 제공하고 있지만, 유출자료 전체를 미러링해서 제공하는 웹사이트가 있다. 여기로.

로그 파일이라고 하니 아마도 서버 관련된 자료중에 있을 것이라 짐작할 수 있다. 조금 뒤져보니 별로 어렵지 않게 찾을 수 있었다. 파일서버(FileServer)라는 디렉토리 아래에 있다. 정확한 위치는 아래와 같다.

https://hacked.thecthulhu.com/HT/FileServer/FileServer/TEMP/


로그 파일 2개를 다운로드 받아 보았다. 각 항목(field)을 쉼표(,)로 구분하는 csv 형식이다. 항목중에 IP주소가 속한 국가가 있기 때문에 "KR"로 검색하면 국내 IP주소들을 확인할 수 있다. 리눅스 shell 명령어의 조합으로 그리 어렵지 않게 분석할 수 있다.

# 한국 IP주소가 있는 항목만 추출
cat log.csv | grep KR | more

그렇다면, 이 로그의 정체는 무엇일까? 일단 항목 구성을 보자. csv 파일의 첫째줄이 항목 이름인데, 아래와 같다.

# 첫번째 줄만 출력
cat log.csv | head -1
Domain,Receive Time,Serial #,Type,Threat/Content Type,Config Version,Generate Time,Source address,Destination address,NAT Source IP,NAT Destination IP,Rule,Source User,Destination User,Application,Virtual System,Source Zone,Destination Zone,Inbound Interface,Outbound Interface,Log Action,Time Logged,Session ID,Repeat Count,Source Port,Destination Port,NAT Source Port,NAT Destination Port,Flags,IP Protocol,Action,Bytes,Bytes Sent,Bytes Received,Packets,Start Time,Elapsed Time (sec),Category,Padding,seqno,actionflags,Source Country,Destination Country,cpadding,pkts_sent,pkts_received


항목 이름중에 위협(Threat)이라는 단어도 보이고 해서 뭔가 해킹과 관련된 것이라고 생각할 여지도 없는 것은 아니나, 일단 이 로그가 상용 프로그램에서 나온 것인지 아니면 해킹팀에서 자체적으로 개발한 프로그램에서 나온 것인지 알아볼 필요가 있다. 위와 같은 형식의 로그가 또 있나 싶어 구글 검색을 해 보았다. "Splunk"라는 회사의 게시판에 꽤 흥미로운 내용이 보인다. 아래의 링크로 들어가 보자.

Best way to have the Splunk Indexers handle a CSV log file



이 게시물의 요지는 대략 이렇다. 어떤 사용자가 Splunk의 복잡한 csv 로그를 효율적으로 다루는 방법이 무엇이냐고 묻고 있다. 그러면서 csv 파일의 내용이 아래와 같다고 한다.

Domain,Receive Time,Serial #,Type,Threat/Content Type,Config Version,Generate Time,Source address,Destination address,NAT Source IP,NAT Destination IP,Rule,Source User,Destination User,Application,Virtual System,Source Zone,Destination Zone,Inbound Interface,Outbound Interface,Log Setting,Time Logged,Session ID,Repeat Count,Source Port,Destination Port,NAT Source Port,NAT Destination Port,Flags,IP Protocol,Action,Bytes,Bytes Sent,Bytes Received,Packets,Start Time,Elapsed Time (sec),Category,Padding

처음에 문제 삼았던 로그 파일의 형식과 비교해 보자. 똑같다. 즉, 위의 로그 파일은 Splunk라는 프로그램에서 생성한 트래픽 로그다. 그러면 대체 Splunk가 무엇이냐가 문제인데, 해당 업체의 공식 웹사이트에 가보면 대충은 감을 잡을 수 있다. 여기로.

Splunk 웹사이트에 나온 바에 의하면, Splunk는 다양한 IT기기/시스템의 동작상황과 관련된 정보들(업체의 표현을 빌리자면 machine data)을 로그 형태로 만들어 이것을 분석하고 시각화하여 효과적인 의사결정을 내리고 문제/위협을 탐지하게 해 주는 프로그램이다. 한마디로 해킹팀이 도입해서 사용중인 IT보안체계의 일부라는 얘기다.

로그 파일의 내용을 잠깐 살펴보자. 국내 IP주소들이 어떤 통신을 했는지 확인해 보았다.

# 시간, ip_src, ip_dst, srcport, dstport, protocol
cat log.csv | grep KR | cut -d',' -f2,8,9,25,26,30


트래픽이 발생한 시간을 보면 단 몇초 동안 국내 IP주소에서 이탈리아의 한 서버(IP주소 93.62.139.41, 이탈리아 밀라노)에 동시다발적으로 udp 패킷을 마구 보냈는데, IP 주소와 무관하게 출발지 포트(source port)는 123, 도착지 포트(destination port)는 80이다. 스파이웨어는 절대 이런식으로 통신하지 않는다. 정상적인 클라이언트-서버 통신이라면 출발지 포트가 서로 달라야 한다. 출발지 포트가 무작위로 선택되기 때문에 저렇게 다 같이 123번이 나올 수가 없다.

그러면 국내 IP주소 외에 다른 IP주소는 어떨까? 온통 출발지 포트 123에 도착지 포트 80이다.

# 한국(KR) 제외
cat log.csv | grep -v KR | cut -d',' -f2,8,9,25,26,30


이제 정리해 보자. 수많은 IP주소에서 동시에 이탈리아의 한 서버로 패킷을 보낸다. 그런데 하나 같이 출발지 포트 123, 도착지 포트 80이다. IT 보안에 약간의 지식이 있다면 이것이 무슨 의미인지 이미 알고 있을 것이다.

이것은 이탈리아 밀라노에 있는 해킹팀 서버에 대한 DDoS 공격이다. 즉, 해당 로그 파일에서 나온 한국 IP주소는 해킹팀 서버에 DDoS 공격을 가한 호스트들이다.

728x90
Posted by 반달가면