티스토리 툴바

 

 


 
 

빠른 응답을 위한 QR코드
QR코드의 QR은 Quick Response의 약자로, 빠른 인식을 위해 만들어졌다. 일부가 손상되었어도 정보의 복구가 가능하며, 방향이 틀려도 인식이 가능한 것이 특징이며, 정사각형의 점들로 이루어져 있다. (QR코드는 김과 밥으로도 만들 수 있다.. - 인식이 된다!)


기존의 막대형 바코드는 2진 데이터를 나타내는데, 데이터 양이 늘어날 수록 그 길이가 훨씬 길어진다.
그러나, QR코드는 데이터 양이 증가하여도 기존의 막대형 바코드에 비해 적은 양을 차지한다.

이와같은 QR코드의 장점때문에 여러 곳에서 QR코드를 정보전달 목적으로 사용한다. 광고에서도, 블로그에서도, 그리고 공항에서도.
최근 공항을 이용하면서 알게된 재밌는 사항을 소개해볼까 한다.

국내에서 꽤 유명한 항공사 중 하나인 A항공사는 '탑승권 교환증'과 '탑승권'에 QR코드를 사용하고 있었으며 전자의 경우 탑승권 발행에, 후자의 경우 비행기 탑승 시 장치에 인식시키는데 사용되었다.


빠른 정보유출을 위한 QR코드?
과연 이 QR코드에는 어떤 정보가 들어있을까?
티켓 발행과정에 사용되는 점을 감안한다면, 신원 확인 내지는 비행기 이용에 관련된 다량의 정보들이 포함되어 있을 것이다.

탑승권 교환증에 포함된 QR코드를 스마트폰으로 인식시키자, 70글자 이상의 문자열이 나왔다.

STpCTDAwMDAwMDAwICA6QUFBQUFBOktFOjEwMDAgOjExT0NUMjAxMTo8QUFBQUEwMDAwMDAwPg==


등호 두개가 붙은 것이, 왠지 BASE64로 인코드된 문자열 같아서 디코드를 하였더니 이런 내용이 나왔으며

I:BL00000000  :AAAAAA:KE:1000 :11OCT2011:<AAAAA0000000>


탑승권에 쓰인 QR코드를 인식하자 역시 위와 비슷한 형태의 문자열이 나왔으며, 이 역시 BASE64 디코드 한 결과

..... :  :     :11OCT2011:CCC: (중략) :DDDDDD::<AAAAA000000>

 
위 두개의 디코드 결과물에서 예상대로 비행과 관련된 다량의 정보들이 들어있었으며, 탑승권과 탑승권 교환증, 짐가방 태그 등에 적힌 정보들을 대조하여 포함된 정보들이 무엇이며 어떻게 배치되어 있는지 알 수 있었다. (위 코드는 예시이다. 개인정보 유출을 방지하기 위해 바꾸었다.)

탑승권 교환증에서는 A항공사 회원번호, PNR(Passenger Name Record), 비행편명, 비행편 날짜
탑승권에서는 A항공사 회원번호, PNR, 비행편명, 비행편 날짜, 출발/도착 도시 국제코드, 좌석위치/등급, 한글/영문 이름, 주민등록번호 앞부터 7자리, 항공권번호를 얻을 수가 있었다. 

만약 QR코드를 누군가 멀리서 찍는다면 위와 같은 정보가 고스란히 넘어가는 셈이다.
여기서의 문제점은, QR코드에 저장되는 문자열의 형태가 암호화된 형태가 아니라 인코드된 형태라는 것이다.

'인코드'된 것은 '디코드'라는 과정을 거쳐서 원래 상태로 돌아갈 수 있으며, 그 방법은 공개되어 있다.
그에 반면 '암호화'된 것은 '복호화 방법'이 공개되어있지 않기 때문에 그것을 고안한 사람들만 그 정보에 접근할 수 있도록 한 것이다.
다시 말해 인코드 작업을 하는 것은, 그것도 흔히 사용하는 BASE64를 이용해 위와 같은 정보를 QR코드에 저장토록 한 것은 보안에 대한 고려를 전혀 하지 않았다는 것과 다를 것이 없다.


최소한의 암호화도 없는 것은 문제이다
일반 사용자들이 저것이 BASE64인코드 결과임을 알아내기는 힘들다. 그렇지만 그 정보들을 담는 과정에서 암호화를 하지 않은 것과 다를바 없는 방법을 사용한 것은 보안을 전혀 고려하지 않은 정보취급이다. 특히나 민감한 개인정보를 취급하는 항공사인데 말이다.

고객의 개인정보를 조금만 더 소중히 다루는 회사가 될 수 있었으면 좋겠다. 
저작자 표시 비영리 변경 금지

크리에이티브 커먼즈 라이선스
Creative Commons License

대부분의 컴퓨터에는 백신 프로그램이 깔려있습니다.
그 종류도 다양합니다. 대표적으로는 (주)안철수연구소 의 V3제품군, (주)이스트소프트 의 알약제품군, Kaspersky, Norton 등의 외국산 백신들도 있습니다.

최근 농협, 현대캐피탈, 7.7 DDoS 등의 사회적 이슈들은 사이버 보안에 대한 관심을 증폭시켰습니다.
물론 여기에는 컴퓨터와 인터넷, 그리고 스마트폰까지 전자장비 및 설비가 대폭 보급되었다는 사실도 한 몫합니다.

그렇게 '사이버 보안'에 대한 필요성을 느낀 사람들은 백신을 설치합니다. 무료백신이던 유료백신이던... 기업들의 경우는 더합니다.
중앙집중형 DRM솔루션은 물론이고 DDoS방어설비 등.. 개인과는 투자 단위조차 다릅니다. 이 글에서는 개인의 위주로 가겠습니다.
백신을 설치한 사용자는 안심합니다. 그리고는 방어막을 하나 쳐두었다는 생각에 '사이버 보안'에 대한 생각을 모두 지워버리곤 합니다.
백신이 알아서 다 해줄테니깐, 백신이 위험하면 다 걸러줄테니깐..

과연 백신이 컴퓨터보안의 완벽한 해결책이 될 수 있을까요?

그렇다면, 왜 '방어막'을 구축하였던 정부와 기업들은 악성코드에 속수무책으로 당했을까요? 백신이 구려서 그런 것일까요?

그 이유들 중 하나로 '샘플 검사의 한계'를 들 수 있습니다.
백신의 개념이 생겨난 시점에는 바이러스 개발자 수가 적었습니다. 그들이 만들어내는 바이러스의 수도 제한적이였죠.
그것들은 샘플검사를 통해 손쉽게 대처할 수 있었습니다.

그러나 지금은 컴퓨터를 쓰는 사람이 많아졌습니다. 심지어 대부분 인터넷이라는 통신망에 연결되어있습니다.
그리고, 프로그래머의 수도 늘어났습니다. 누구든지 악의적 목적을 가지는 프로그램을 제작할 수 있고, 불특정 다수를 대상으로 감염을 시킬 수도 있습니다.
실제로 autorun.inf를 공격타깃으로 하여 감염체를 심는 바이러스들은 백신에 탐지되지 않는 경우가 많으며, 대다수는 중국 등 해외에서 제작되는 것으로 추정됩니다.
하루에도 수없이 많은 바이러스들을 만들어내고 있는데, 그것들이 샘플 검사를 통해 모두 걸러질 것이란 보장은 할수 없습니다. (모든 샘플을 다 만들 수가 있을까요?) 많은 유저들이 백신프로그램이면 모두 잡을 수 있다 생각하는 것과 반대되는 결과입니다.

결과적으로는 유저가 자체적으로 주의하며 사용해야 하는데, 현실적으로 그것이 불가능하죠.
(유저가 모든 리스크를 파악하며 프로그램을 사용하기엔 너무 번거롭죠)

바이러스를 효과적으로 탐지해내는 기술이 있다면 모를까, 설령 휴리스틱 기법도 악의적인 행동을 완벽히 구분하지 못합니다.
앞으로 전자장치의 바이러스는 증가하고 형태도 다양해질텐데, 어떤 방안이 효과적인 대응책일지 궁금하네요.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
주) 본인이 아는대로 쓴 것이므로, 아래 내용에는 일부 틀린 내용이 존재할 수도 있습니다.

* 희한한 비즈니스 모델
소셜 커머스가 SNS를 통해 기하급수적으로 퍼져나가고 있습니다.  국내에도 수많은 소셜 커머스 업체들이 존재한다고 합니다.
10원 경매, 소셜 경매가 이것의 변종으로 생겨난다고 합니다.

결론적으로 말하면 10원 경매를 진행하는 업체는 어떠한 경우에도 손해를 보지 않습니다.
낙찰되는 사람도 손해를 보지 않습니다... 낙찰에 실패하는 사람들이 손해를 보는 것입니다.
물론, 경매라는 것 자체가 약간의 도박성을 띠기도 합니다. 하지만 10원 경매는 조금 더 큰 도박성을 띠고 있습니다.

대부분의 10원경매 업체는 시스템적인 문제가 없습니다. 복권 같은 형식입니다.
로또에 1만원을 걸고, 실패한다고 해서 복권업체에서 이를 환불하지는 않지요.
현재 '10원경매' 업체 중 하나인 Y업체를 예로 들어보겠습니다.

* 게임성을 높이기 위한 장치들
시중에서 거래되는 가격의 1~2%에 불과한 가격에 낙찰가가 형성되고 있습니다.
이제 아무런 입찰자가 없다면, 최상위 입찰자가 제시한 가격에 낙찰이 될 것입니다.


- 10초 미만 남은 시간에 입찰하면, 시간이 연장됩니다.

위의 스크린샷을 찍은지 몇분 지나지 않았습니다만, 초기 입찰가에 1000원이 더 올랐습니다.
워짜피 낙찰되지 못해도 큰 손해가 아닌 만큼, 10원 단위로 계속 낙찰을 위한 싸움이 시작되는 것이지요.
그렇게 경매에 투자되는 돈은 모두 업체의 몫입니다.

업체는 좋지요. 가격이 계속 올라가니깐. 경쟁이 치열하면 치열해질 수록 업체가 보는 이득은 더욱 더 커집니다.

1000원에서 10원 단위씩 8000원 까지 올렸다고 쳐봅시다. 그러면 1000+1010+1020+....+8000원 만큼의 돈이 경매에 걸리게 되죠. 총 합은 3150000원입니다. 실제 물건 값의 몇배가 넘지요. 업체는 이 과정만으로도 충분한 이득을 본 것이죠.
결국 이 제품은 1만원 가까운 가격에 낙찰되었습니다. 경매주관사는 수 백만원의 이익을 챙겼습니다.

SNS를 통해 입소문이 빨라지고, 결정이 더욱 빨라지고, 거래 규모가 커진다면 그 이익은 더욱 커질 것입니다.

* '업체를 위한' 안전장치들
이러면서 이용자들의 불만이 생길 수 있습니다.
- 따라서 입찰에 걸은 금액만큼 제하고 남은 차익을 추가로 지불하여 물건을 살 수 있습니다.

 그러면 유저는 '적어도 손해'는 보지 않으니깐요.

이제 여기까지가 '10원 경매'의 정상적인 비즈니스 모델입니다. 복권업자와 다를 것이 없습니다.

그러나 최근에 문제가 되는 부분은, 과도히 게임성이 높아지거나, 부정입찰이 이루어진다는 뜻입니다.

- 업체가 경매가를 조작하는 경우

업체에서 매수한 사람 혹은 내부 직원이 가격을 계속 높이는 것입니다. 주식에서 작전 세력이 개미들의 투자금을 모으는 것과 비슷한 것이라 할 수 있습니다. 경매가가 높아진다면, 워짜피 회사의 돈으로 입찰하는 거니 손해는 없으며, 다른 사람들의 투자를 부추기는 행위입니다.
앞서 말한 바와 같이, 회사의 총 금액은 사람이 많아질수록, 그리고 낙찰가가 높아질수록 빠른 속도로 증가합니다.

- (회사와 관계없는 사람들이) 여럿이서 짜고 경매가를 높이는 경우
- 애초에 사이트 구조가 가격조작이 가능하도록 구성된 경우


등 다양합니다.

* 신종 도박이라고 해도 될까요?
잘 이용하면 꽤 이익이 되는 것입니다. (이는 모든 '투자'의 개념과 일치하는 것인가요?)
하지만 중독성이 매우 큽니다. 심지어 조작 가능성도 높습니다.
주변 친구들이 요즘 이것에 많은 관심을 보이고 있습니다. 엄청나게 싸다는 이유에서 입니다.
단순히 싸다고만 생각했던 10원경매, 잘 생각해보면 교묘한 속임수가 여럿 존재할 수 있는 시장이라 생각됩니다. 

저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License
* 증상

내 친구중 한명이 채팅으로 이런 말을 보냅니다.

u hey can i post this picture of u on my fb? http://apps.face****.com/easyimages/photo.php?=(15자리 숫자)

누르면 페이지가 이동되며 어떤 실행파일을 저장하게 합니다.

PIC456454680759-JPG-www.facebook.com.exe  이것은 하나의 예시입니다.

실행이 되면, 그 사람의 명의로 다른 사람들에게 저러한 채팅 메세지를 전송하게 됩니다.

정리하면, 감염된 것입니다.

* 분석... 자료? (패턴 예시)
하단의 URL들에는 별표처리가 되어있습니다. 멋모르고 누르는 사태를 막기 위한 것...
voize*** -> voizeasy

이 뒤의 15자리 숫자는 메세지를 받는 사람의 Facebook 고유 번호입니다. 이 번호는..
www.facebook.com/profile.php?id=(15자리 숫자) 에서 (15자리 숫자)입니다.

감염자의 정보를 추적하는데 쓰이는 것으로 보입니다.

또한 상기 URL을 클릭하면,
http://voize***.com/mp3/photo.php?=(15자리 숫자)&fb_sig_in_iframe=1&fb_sig_locale=ko_KR&fb_sig_in_new_facebook=1&fb_sig_time=(시간정보)&
fb_sig_added=0&fb_sig_country=kr&fb_sig_api_key=(32글자 16진수, MD5키로 추정)&fb_sig_app_id=106063326141313&
fb_sig=(32글자 16진수, MD5키로 추정)

이러한 페이지가 중간에 삽입됩니다. 사용자에게 보여지는 페이지 모양은 아래와 같습니다.


이 페이지는 Facebook 사이트에서 출력되는 것이 아닙니다! Facebook 페이지의 일부인것 처럼 위장한 것입니다.
사용자가 이 페이지를 들어가거나, View Photo를 클릭하는 순간

라는 파일을 다운로드 하게 합니다.

151040 Byte이며, 
이런 아이콘을 가집니다.

이 파일이 감염 주체이자 악의적 행동을 담당하는 바이러스 본체라 하겠습니다.


* 패턴 정리
2. 패턴2 (tengdasm.com)
 항목  값
 유도 메세지  u u look so amazing in this picture http://apps.face****.com/satenasm/photo.php?=(15자리 숫자)

[전송 간격 : 20분]
 위장 삽입 프레임  http://www.tengd***.com/pub/photo.php?=(15자리 숫자)&fb_sig_in_iframe=1&
fb_sig_locale=ko_KR&fb_sig_in_new_facebook=1&fb_sig_time=1298685031.9312&
fb_sig_added=0&fb_sig_country=kr&fb_sig_api_key=1a35413cd2040dc1c41a9c87d66bba69&
fb_sig_app_id=185622134807946&fb_sig=afbb92ed79ea67468e38fbb45225196a
 유도 파일  http://www.tengd***.com/pub/facebook-pic0009459467503.exe
 파일 크기  192512 Byte
 체크섬  MD5 : 19B02A69294C7A4DAB131268160AE62C
 SHA1 : 2EEBBFC20F9BF9A741B8CBDE05839D1F73C1FBD1


* 정리 및 결론
1. Facebook 채팅을 통한 감염
-> SNS 사이트 특성을 이용한 손쉬운 감염루트 확보

2. Facebook 내부에 개설한 앱에는 아무런 권한을 요청하지 않음
-> 사용자들이 별도의 경고창없이 접근하게 하며, Facebook 내부에서 확보한 사용자 개인정보를 확보함 (고유번호, 로케일 등)

3. 외부 페이지에서 바이러스 프로그램을 실행하도록 유도하는 내용을 삽입하고, 이를 상기 앱에서 그 페이지를 열게 함
-> Facebook의 추적을 피하기 위한 것으로 추정. 

4. 전송되는 데이터 패턴이 비슷함
-> 동일인 소행가능성 높음. 수법도 동일. 앱 이름만 바뀌었을 가능성 높음. 해킹된 서버에 php파일만 삽입시켰을 가능성 높음.

5. 어제 감염된 사람이 메세지만 바꾸어 보냄
-> 해커가 세션 자체를 복제했을 가능성 높음. 적합한 권한을 확보하였기 때문에 감염체로 활용가능. 즉, 주기적인 refresh가 이루어진다면 지속적으로 메세지가 전송될 것.

-- 주저리주저리 종합결과
해커는 외부의 서버를 해킹하여서 감염체를 보관하는 서버 및 사기용 페이지를 담는 목적으로 활용하였고, 감염된 사용자들의 Facebook 채팅 메세지를 통해 클릭을 유도, 프로그램 실행을 유도하였습니다.
상기 프로그램은 Facebook 세션 정보?를 복제하는 것으로 추정되며, 실제 해당 사용자의 로그인여부와는 상관없이 단독으로 행동합니다. 또한 이중감염이 되지 않는 것으로 보이며, 날짜별로 그 주소가 바뀌는 것으로 추정됩니다. Facebook App이름이 계속 바뀌는 것으로 보아, Facebook App을 등록하고 외부 사기용 페이지를 연결하는 과정이 자동화되어있을 가능성이 높습니다. 따라서 유사 현상 발생 가능성이 매우 높으며 사용자들이 패턴을 인지하여 클릭하지 않는 것이 방법인 듯 합니다.
동시에 2명의 사기메세지 전송이 이루어진 것으로 보아, 한 서버에서 이 모든 것을 주도할 가능성이 있습니다. 또한, 특정한 시간대를 맞추지 않는 것으로 보아 제로데이 공격까지는 아닌 것으로 보입니다.

바이러스 본체가 실행되었다면, 이후의 일은 사실 예측할 수가 없습니다. 이미 넘어간 정보들을 이용해서 계속 전파를 하는 위치가 제3의 위치인지 내 컴퓨터인지 알수가 없기 때문이죠.

- 패스워드 변경
- 바이러스/스파이웨어 검사

가 사용자 단계에서 유일하게 취할 수 있는 방법인 것 같습니다.
또한, 확인되지 않은 '권한 요구' 및 '실행 유도' 등에 대해서는 다시 생각해보거나, 실행 및 허가를 자제하는 것이 좋습니다.
실행 프로그램이 실행되고, 권한을 부여받은 경우 이 프로그램의 정상동작을 보증하는 것은 회사나 제품의 이름 뿐입니다. 신뢰되지 않은 위치에서 받았다면 이마저도 없죠. 해커가 무슨 행동을 하는지.. 알기 쉬울까요?

친구라 해서 일단 누르고 볼게 아니라, 그것을 역이용하는 크래커들을 생각해보며, 안전한 SNS이용 방법에 대해 다시 생각해볼 필요가 있습니다.
저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License

* 친구를 잘 찾아주는 참 신기한 Facebook
Facebook의 친구찾기 기능은 간혹 사람들을 놀라게 합니다. 전혀 예상치 못한 사람이, 혹은 내가 애타게 찾던 사람이 연결되는 경우가 있기 때문이죠. Facebook이 어떻게 찾나 신기해하죠.

그 뒤에는, 개인정보의 활용이 숨어있습니다. 이상하네요? Facebook은 패스워드를 저장하지 않는다고 했는데 말이에요.


잘 보면, 비밀번호를 저장하지 않는댔지 이 과정에서 얻은 개인정보의 처리방안은 구체적으로 명시되어있지 않습니다.
상단의 '기능을 이해'를 클릭하면 아래와 같은 내용이 나옵니다.

연락처 가져오기
Facebook은 불러온 연락처를 절대로 다른 사람과 공유하지 않지만 회원님을 대신하여 이를 저장, 더 나은 친구 추천을 제공하기 위해 사용할 수 있습니다. 이메일 서비스에 따라 연락처 및 메일 폴더의 주소가 포함될 수 있습니다. 개인적인 용도로 사용하는 이메일 계정의 연락처만 불러오세요.
언제든지 불러온 연락처 관리 또는 완전 삭제가 가능합니다.

이런 내용은 사용자의 개인정보 활용에 관한 내용으로서, 충분한 안내를 하지 않고 있습니다.
일부 사람들은 Facebook이 비밀번호를 저장하지 않고 스캔하는 장면을 통해서, 자신들의 개인정보가 Facebook 사이트에 저장된다는 사실을 모르고 있습니다. 교묘하긴 합니다만 이 글의 논점은 아니니 넘어가겠습니다.

이처럼 소셜 네트워크 서비스 제공자 입장에서는, 개인정보가 곧 서비스의 품질 내지는 UX의 변화를 가져오며, 장기적으로 본다면 '돈'이 되는 셈입니다. 더 많은 사람들을 자사 서비스로 끌어들일 수 있고 광고 노출수 증가로 이어지니 Facebook의 수입 증가에 일조한다 하겠습니다.

혹은, 이러한 사이트가 해킹당하여 개인정보가 탈취당한다면.

* 무분별한 권한 부여, 내 정보는 어디로 가는가?
특히나 스마트폰이 대중화됨에 따라 개인정보 활용 및 무단수집에 관한 문제가 더욱 커져가고 있습니다.
컴퓨터 프로그램도 같은 상황입니다만, 컴퓨터 보다는 지극히 더 개인적인 정보들이 스마트폰에는 존재합니다. 물론 이러한 문제를 예방하기 위해 안드로이드 체제에서는 '권한 요구 확인'을 거치게 되어있습니다. (iOS에서는 그럴 필요가 없는 것이, 애플에서 자체적으로 검사를 하여 승인하기 때문이죠.)

하지만 이러한 '권한 메세지'는 개발자들의 이야기일뿐, 일반 사용자들이 이를 고려하며 사용하긴 힘듭니다. 각 권한이 가지는 의미와 영향까지 고려하면서 앱을 사용하기엔 너무 짜증나죠.

기술적으로 들어가본다면, 스마트폰 운영체제는 후킹이 용이한 구조가 아닙니다. 커널 드라이버를 동원한다면 몰라도 이는 root권한이 필요하기 때문이죠. 별도의 루팅을 거치지 않는 이상, 불가능한데다 윈도우 아키텍쳐와는 달리 후킹이 불가능한 것으로 알고 있습니다. (확실치 않음)

이렇듯 스마트폰은 보안에 매우 취약합니다. 한가지 예를 들어보겠습니다.
사용자의 연락처를 관리하는 프로그램이 있습니다. 흔히 볼 수 있지요. 이 프로그램은 '연락처 접근 권한'을 요구할 것입니다.
그럼 사용자는 허용을 하겠지요 이 프로그램을 사용하려면. 이제 이 프로그램이 연락처를 어떻게 할지... 아는 사람 있나요?
이 프로그램이 연락처를 뺴돌릴 수도 있습니다. 이것은 '전화번호부'를 예로 들은 경우이고..
무료 메신저 프로그램이라 해놓고는 위치 확인 권한을 요구하여 중앙 서버에서 특정 번호를 가진 가입자의 위치를 쫙 꿰고 있다면.. 어떻게 생각하시나요? 물론 이러한 예들은 개발자가 악덕한 목적으로 했을 극단적인 케이스이지만..

권한 부여에 대해 심도있는 고려를 하지 않는다는 점과, 개인적인 정보가 권한에 의해 접근제어가 되는 만큼
개인정보 접근 권한에 대한 문제점이 다수 존재하는 것으로 생각됩니다.

* 실행이 되고 권한이 쥐여진 순간, 믿을 것은 이름값뿐
Facebook 앱이던 스마트폰 앱이던 컴퓨터 프로그램이던, 일단 실행이 된 순간 그 프로그램이 어떤 행동을 할지 아무도 보장할 수 없습니다. 정상적인 작동을 보장하는 것은 전자서명과 프로그램의 이름값 뿐입니다.
프로그래머가 어떤 코드를 넣었는지 일일히 분석하고 따질 수가 없습니다.

간혹 ActiveX 설치창이 뜨면, 읽어보지도 않고 무조건 설치하는 경향이 많습니다. 이에 대해서는 나중에 다시 다루어 보겠습니다만
간단히 얘기하면, 뉴스를 보는데 '스폰서 프로그램'을 깔려 하는 경우입니다. 불필요한 프로그램, 특히나 사용자의 컴퓨터 성능 및 이용환경을 저하시킬 소지가 있는 프로그램을 설치할 이유는 전혀 없습니다. 

응용프로그램에서 관리자 권한을 요구할 때 이를 사용자가 재검하도록 하는 UAC기능, 오히려 불편함으로 여기고 무조건 허가를 해버립니다. 스마트폰 앱이 루트 권한을 요구할때 무조건 승인을 해버립니다. 시스템의 중요한 설정을 바꾸는 바이러스, 역시나 아무런 제제없이 이러한 방어장치를 통과해버립니다.

권한 문제와 실행의 적절성을 일일히 따지는 것은 시스템을 자세히 알지 않는 이상 시행하기 어렵습니다. 구별이 어려운 것은 누구에게나 마찬가지이겠지요. 그럴수록 이름값에 걸어버릴 수밖에 없습니다. 혹은 그만큼의 리스크를 안고 비공식 루트를 활용하게 되겠죠.
여러가지 프로그램을 설치하고 실행할때, 다시 한번 주의깊게 봐야할 필요가 있다 생각됩니다.

* 정리
이처럼, 다양한 프로그램들이 다양한 경로를 통해 정보와 권한을 요구합니다. 앞서 언급한 Facebook의 경우와 같이 정보가 돈인 곳에서는 사용자들에게 거의 공지하지 않다시피 하며 정보를 수집하고 그것을 자신의 서비스에 활용합니다. 소셜 네트워크 기반의 프로그램들이 특히 그러합니다. 편법 내지는 교묘한 방법을 통해 개인정보가 외부로 반출된다면 사용자 입장에서 그리 기분좋지는 않을 것입니다. 그것이 마치 자신들의 서비스의 특수 기능인 마냥 알려지는 것도 결코 맞지는 않겠죠.

ActiveX의 무분별한 설치는 컴퓨터 성능 저하를 가져오기도 합니다. 다양한 스마트폰 프로그램도 역시 동일합니다. 요구되는 권한이 가끔씩은 이해가 되지 않을때도 있습니다.

정보화 기기가 늘어나고, 다양한 내용들이 정보화됨에 따라 접근 권한이 중요해지고 있습니다. 그 전처럼 귀찮은 방어수단이 아니라 자신의 정보를 지키면서 원활한 서비스 이용이 가능해지는 방법이 아닐까요?
저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License

* 왜 UX가 중요해질까요?
십여년 전까지만 해도, 소프트웨어 개발자의 수는 엄청 적었습니다.
하지만 이제는 컴퓨터 보급률이나 하드웨어 기술 발달 등으로 인해 급격히 증가하였습니다.

어떤 소프트웨어를 개발할 수 있는 사람이 증가하였으므로 지식의 양도 늘어났을 것입니다.

누구든지 시간만 있으면, 프로그램을 개발할 수 있게 된 것입니다.
물론 오랜시간동안 쌓인 기술력은 무시할 수 없지만, 비슷한 류의 프로그램이고 서로가 경쟁관계라고 생각한다면
기술력은 거의 차이가 없게 됩니다.
설령 특허권을 설정하였다 할지라도, 같은 '목적'을 이루기 위해서는 여러 방법이 존재할 수 잇으니깐요.

똑같은 기능이 있다면 사용자는 쓰기 편한 것을 원합니다.
즉, UX(User eXperience)가 중요한 요소가 되어버립니다.

* 사용자의 입장에서 생각한다면..
UX는 사용자가 경험하는 모든 것들을 포함시킬 수 있습니다. 설치, 사용, 사후 지원 등....

간단한 예를 들어본다면, 국내 시장에서 한글과컴퓨터 '한컴오피스' 와 Microsoft 'MS오피스' 의 관계, Windows와 Linux 계열 OS의 관계 정도가 되겠습니다.

어디선가 본 자료에 따르면, MS오피스가 오피스 프로그램 시장의 절대적 위치를 확보하지 못한 나라는 한국이 유일하다 합니다.
DOS 시절부터 맥을 이어온 한컴오피스가 차지하는 비중이 비교적 크다 합니다. (양 제품의 구체적 수치는 모르겠으니 비슷한 수치 정도로 표현하겠습니다.)

* First Mover Advantage?
First Mover Advantage라는 것이 있습니다. 비슷한 아이디어가 여럿 있을때, 먼저 움직이는 사람이 이득을 보는 것이라 할 수 있습니다. 삼성전자의 '갤럭시 제품군'이 LG전자의 '옵티머스 제품군'보다 일찍 출시되어 아이폰과 갤럭시 제품군으로 시장이 다 형성된 다음에서야 옵티머스 제품군의 판매가 시작되어 LG전자 휴대폰 사업부의 적자가 생긴 경우도 이것의 예로 볼 수 있습니다.

Microsoft가 MS오피스 라는 오피스 패키지로 발매한 시점이 95년 쯤으로 알고 있습니다. 그 이전에는 MS 독자적인 워드프로세서는 물론이고 오피스 프로그램도 없었습니다. 한글과컴퓨터는 이러한 점에서, Microsoft에 비해 빠른 시장진출을 하였습니다. 그렇지만, 과연 지금까지도 그러한 '이점'이 계속 작용하고 있는 것일까요?

CUI (Console User Interface : 검은 바탕에 흰글씨...)에서 GUI (Graphic User Interface : 지금 쓰는 인터페이스) 로 넘어오는 변화처럼, 이른바 '경험의 혁신'을 가져올 수 있는 변화는 사용자들을 손쉽게 사로잡을 것입니다. 이는 사용자들의 더 많은 선택을 받기 위한 것이 제1이유지만, 마케팅적인 측면에서 보았을때는 Purple Cow 효과 또한 얻을 수 있습니다. 요즘들어 뜨고 있는 입소문 마케팅과 비슷하죠. 조금 더 멀리 본다면, 대한민국 IT업계의 전체의 발전으로 이어질 수도 있습니다.

* 사용자를 사로잡는 'Something'이 필요하다
이러한 '경험의 혁신'이 없다면,
어느 제품이던 기본적 기능만 비교한다면 다 똑같은 제품이 되어버립니다. 이때 유일한 비교사항은? 가격!
가격은 보통 원가에 어느정도의 이윤을 붙이죠. 프로그램에서는 마케팅 비용 및 개발자 월급도 들어가있을 것입니다.
앞서 깔아둔 '소비자의 전제조건'을 다시본다면, '기본적 기능'을 갖춘 프로그램은 굳이 Microsoft Office 나 Hancom Office가 아닐 수 있습니다. 특히나 소프트웨어 구매에 인색한 소비자들이 많은 우리나라라면 말이죠. 그럼 가격경쟁력을 높여야 하는 것인가요?

만약 가격을 낮추어 MS오피스보다 싸게 판다면, 개발자들 월급이 줄어들을 수도 있고, 기타 개발에 관련된 인력들의 보수가 줄어들 수도 있습니다. 그러한 현상이 사회 전반적으로 형성된다면, 좋은 프로그램이 나올리는 만무하죠. 선순환이 되어야 하는데 말입니다.

사용자를 사로잡는 'Something'을 가장 잘 이용하는 기업으로 'Apple'을 꼽을 수 있습니다.
애플은 아이폰의 광고에서 성능에 대한 언급을 하지 않습니다. 단지 이들은 자사의 제품으로 무엇을 할 수 있는지를 보여줍니다. 그러나 그것은 기존에 존재하지 않던 '무언가'에 대한 내용들입니다. 'iTunes' 및 'App Store'도 마찬가지 입니다. '이렇게 손쉽게 할 수 있다니!'라는 인상을 소비자들에 각인시킨 애플은, 심지어 잡스 신으로 추앙하는 사람들까지 만들어내었습니다. 세상에 없었던 것을 매번 내놓는 신, 여지껏 경험하지 못하였던 '경험의 혁신'일 것입니다.

물론 이러한 '경험의 혁신'도 한계는 분명히 존재합니다. 현재 Apple이 iPad의 판매량이 기대에 못미친다는 점도 관련이 없지는 않을 것입니다. Apple의 제품 및 서비스 개발 방식 및 광고 방식이 적절했는지, 올바른지는 본인이 판단할 수 없지만 사용자들에 그러한 혁신을 지속적으로 던져준다는 점은 높이살 수 있습니다. 또한 이러한 혁신이 있다고 해도 제품 자체의 결함이나 문제점까지 커버해줄 수 있는 것은 아닙니다.

* 입맛 당기는 UX는 Hot Item을 만들어낼 수 있다
보기만 해도 신기하고 한번 써보고 싶고, 그것이 소비자가 지갑을 여는 행위까지 이어지는, 그야말로 '입맛 당기는 UX'는 Hot Item을 만들어낼 수 있습니다. 어느 소비자라도 더 편하게, 더 좋게 쓰고 싶어합니다.

이러한 소비자들의 동향을 파악하고 그에 대응하여 제품을 내놓는 기업가가 점점 늘어났으면 좋겠습니다. 창의적 아이디어는 그 기반이 되겠습니다. 단순히 회사의 이익에서가 아니라 소프트웨어 산업 전체를 발전시키는 선순환으로, 더욱 편한 IT Life를 만들어가는 초석을 닦는 관점에서라 하겠습니다.

저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License
소개 동영상 : http://blog.naver.com/white558?Redirect=Log&logNo=100115716302&jumpingVid=52A9956B68D92CD50BD2BA6B3D1A47100729
 
말 그대로, 보안장치를 무력화하는 방법입니다.
아직 실제로 해보지는 않고 저 동영상을 보고 머리속으로 간단히 생각해본 것이지만, 어느정도 가능할거 같긴 하네요.

저 시스템이 탐지하는 원리는 이렇게 추정됩니다.
HDMI 케이블이 연결되는 시점을 캡쳐하여서 영상이 지원되는 장치일 경우 영상 재생을 중단하여 HDMI 케이블을 통한 영상 캡쳐가 불가능하도록 하는 것.

위의 방식대로라면, 몇가지 취약점이 존재할 것으로 생각됩니다.
- 사용자가 쓰는 모니터가 HDMI 케이블로 연결되어있다면, 무조건적 HDMI 장치 필터링이 불가하여 HDMI 장치의 필터링 기준에 대한 잠재적인 취약점.

처음부터 모든 모니터 장치를 빼버리고 HDMI 케이블로 캡쳐보드를 연결해버린다면, '추가적인 연결'만 파악할 수 있는 보안 솔루션에서는 간단히 무력화가 될 것 같습니다.

- HDMI 장치의 리스트 구성 방식.
아마 블랙리스트 방식을 택할 것입니다. 이 세상에 존재하는 모든 HDMI 장치보다는 캡쳐장치를 찾는게 더 쉬울테니깐요.
HDMI 캡쳐보드만 블랙리스트를 통해 필터링한다면, HDMI 출력 -> HDMI-RGB 변환기 -> RGB-HDMI변환기->HDMI 캡쳐보드 같이, HDMI 출력과 HDMI 캡쳐보드 사이에 간단한 변환기를 둔다면 HDMI 캡쳐보드의 존재여부를 판단하기 힘들 것이므로 블랙리스트 방식의 우회가 가능합니다. 이는 화이트리스트 방식이여도 마찬가지일 것입니다.

뚫리지 않는 보안 프로그램 없고, 완벽한 차단법도 이 세상에는 존재할 수 없습니다. 위의 방법들이 실제로 적용이 될지는 모르겠지만, 창과 방패의 다툼을 보는 것 같아서 흥미로웠습니다. 동영상 중간중간 '완벽히 방어할 수 있는'을 뜻하는 문구들이 많았는데, 정말로 개구멍 하나 없을지 궁금합니다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

* 무선 데이터 전쟁
연일 SKT와 KT의 무선 통신 시설 확충과 홍보전이 진행되고 있습니다.
SKT는 3G를, KT는 WiFi를 주 무기로 하고 있습니다.

전국 어디서나 콸콸콸~ 이라는 문구 아래 데이터 트래픽의 우세를 강조하는 SKT.
3G보다 빠른 속도와 완전 무료라는 타이틀, 쿡앤쇼 와이파이 등으로 광고를 하는 KT.

양쪽 모두 좋은 조건입니다. 하지만 저 뒤에는 유저가 '당연하다는 듯'이 인지해버릴 만한 사항들이 있습니다.
이는 양사의 전략일 수도 있죠.

* 우선 SKT의 경우입니다.
SKT에서 펨토셀을 박던 뭐를 하던 3G라는 통신망 자체의 속도는 나아지지 않습니다. 이거는 기술적인 한계입니다.
휴대폰이 안터지는 곳이 거의 없죠? 그렇기 때문에 '전국 어디서나 콸콸콸'이라고 합니다. 그것이 'SKT만의 특장점'은 아닙니다.
다만, WiFi의 커버리지에 비해서는 우세한 것이 사실입니다. 전국에 WiFi를 심지는 않았으니까요.



그리고 SKT의 홍보문구 중 '데이터 고속도로'라는 표현은 마치 자사의 3G 속도가 빠르다는 인상을 줍니다. 하지만 저기서 고속도로의 의미는 데이터 흐름이 원활하다는 뜻입니다. 데이터 전용 채널을 구비하고 있기에 가능하죠. 하지만 이는 QoS (트래픽이 급증할때 품질의 균등 제공을 위해 서비스 품질을 차등화 시키는 것)에 대한 대비책으로써 속도 향상에는 아무런 영향이 없습니다. 일반적인 상황에서는요.

정리하면, SKT는 3G의 트래픽을 분산시키는 목적을 가지고 있으며, 펨토셀은 대표적인 예입니다. 하지만 일반 사용자들이 얻는 편익은 그리 크지는 않을 것으로 보입니다. 주중 점심의 강남대로와 같이 인구가 밀집되고 트래픽이 대폭 증가하는 그런 지점에서라면 몰라도요. 이는 '원래 3G'보다 트래픽에 의해 감소한 것으로 그것이 3G의 품질향상에는 기여하는 바가 없습니다.
또한 무제한이라는 광고 문구는 특정 요금제를 사용하는 고객 기준이며, 이외의 고객들은 여전히 종량제입니다. 당연히 유료입니다.

* KT를 보겠습니다.
KT의 광고문구는 마치 WiFi가 KT의 것인것 마냥 인식하게 하고 있습니다. 물론 WiFi는 KT의 전유물이 아닙니다. 어느샌가 WiFi 하면 올레를 하는 사람도 생겼어요. 대단한 광고전략...

또한 KT의 WiFi망을 이용하기 위해서는 별도의 서비스를 가입해야 합니다. 돈이 들어가죠. 그들이 선전하는 것처럼 전국민 무료/무제한 WiFi시대 가 아닙니다.

그리고 WiFi는 Cell Hopping?이 불가능하기 때문에 AP를 중심으로 한 특정 커버리지에서만 데이터 통신이 가능합니다.

따라서 AP를 아무리 촘촘하게 심는다고 하더라도 AP가 깔린 길을 걸으면 뚝뚝 끊기면서 데이터 통신이 될 것입니다. 이동하면서 데이터 통신을 하기 힘들다는 뜻입니다. 뿐만 아니라 그정도로 NESPOT 및 QookNShow AP가 깔리지도 않았습니다.

KT의 WiFi AP장비들은 대부분 802.11g 규격에 맞춰저 있습니다. 최근들어서 802.11n 장비로 교체하고 있지만.. 이때 이론상 최대치는 150Mbps 라 합니다. 이 AP에 한두명 접속하진 않을겁니다. 10명이 한다고 치면 15Mbps 씩을 할당받는 셈입니다. 그런데 KT가 WiFi를 위한 전용선을 깔았을 가능성은 조금 낮습니다. 근처의 KT회선에서 끌어왔을 것입니다. 이 회선의 이론상 최대치는 100Mbps입니다. 최근에는 기기비트 회선이 생겼다고 하지만.. 통신 제반시설은 여전히 100Mbps에 맞춰져 있습니다. 그렇다면 최대유량은 100Mbps이겠죠?

앞의 15Mbps는 단순히 무선의 이론상 속도에 불과하고, 실제 최대 통신속도는 10Mbps 정도에 못미칠 것입니다. 물론 이러한 추정은 구체적인 정보가 없는 상태에서 진행한 것입니다. 그렇지만 KT무선망 사용 경험 등에 미루어 본다면, 그리 쾌적한 속도는 되지 못합니다.

이처럼 양사 모두 자사 통신서비스에 고객들을 더욱 많이 유치하기 위해 다양한 방법들을 시도하였으며 그 뒤에는 사용자에게 구체적으로 밝히지 않고 넘어가는 것들이 있습니다.

모두에게나 콸콸콸이 되지 못하는 데이터 고속도로와 돈을 낸 국민들의 무제한 위치제한 WiFi시대를 만들고 있는 양 통신사.

잘 알고 선택해야 할 것 같습니다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

SBS 뉴스추적에서 '스마트폰의 불편한 진실'을 주제로 방송하고 있네요.
스마트폰의 본질적 문제를 말하는 것처럼 보였습니다.

그러나 막상 방송을 보니 스마트폰이 아니라 무작정 스마트화를 하는 정부와 기업의 문제이네요.
정책은 전혀 우호적이지 않으면서 '스마트 오피스'를 제창하는 서비스 제공자나
무작정 스마트폰이 좋다고 갈아타는 사용자들이나
똑같죠.

방송 말미에서는 이와같은 결론을 내리긴 했습니다만,
내용과 제목은 무척 다른 것 같습니다.


정작 문제를 제기하라고 하면 '아이폰' '아이폰'하는 언론들의 태도를 꼬집어야죠.
아이폰은 말그대로 '아이'를 위한 폰입니다.
폐쇄적인 애플의 태도가 바뀌지 않는 이상 여러 업체들이 언제까지나 App개발을 하지는 않을 것입니다.
개방적 혁신이라고 하죠. 여러사람이 머리를 맞대어 발전시켜나가는 쪽은 항상 이겼습니다.

오로지 App과 UI로 사용자들을 사로잡는 것은 스마트폰 1세대. 그들은 충분한 편리함을 느꼈습니다. (타 업체에서 이런 방식을 베끼고 있죠.)
앞으로는 이를 넘어서, 더 편리한 방법들을 찾아나가는 것이 다음 세대의 스마트폰이겠죠. (여기에 안주하면 발전이 없겠죠.)

결론적으로 말하면
어떤 매체던 결국 편향된 입장만을 보여주고 있습니다. 그것이 스마트폰 자체에 대한 논쟁이던,
몇몇 회사들의 제품이나 AS제도에 대한 논쟁이던. 단지 그것은 하나의 '시각'을 제공해주는 것일 뿐입니다
.
제일 중요한 것은 사용자 스스로가 스마트폰이라는 존재에 대해 이해를 하는 것입니다. '이해'라는 것은 새로운 존재를 수용하는데 좋은 방법이 되곤 하죠. 다문화가정도 그렇잖습니까.

기본앱만 써도 좋습니다. 쓰다 보면 그 속에서 가치를 찾아 점점 발전해나갈 것입니다. 그러나 겉핥기 식 사용은 스마트폰을 전기를 축내는 장치로 전락시키거나 사용자를 후회속에 빠뜨릴 뿐입니다.

저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License

마케팅에 대한 열정
시장에 수많은 폰들이 공급되고 있고, 사용자들은 그에 따라 더 많은 선택권을 얻게 되었다.
최소의 비용으로 최대의 만족으로 얻고자 하는 '경제원칙'에 따라 사용자들은 합리적인 선택을 하기 위해 이들 제품 간 비교를 하기 마련이다. 비단 스마트폰 뿐만 아니라, 유독 국내 제조사들은 수많은 종류의 제품들을 양산하였다. 이들은 제품별로 컨셉이 다르고 특장점이 다르기 때문에 사용자들에게 '이 제품이 좋다'라는 결론을 쉽게 내릴 수 없게 한다. 자신이 원하는 폰을 찾기까지 혼란이 가중되고 있다.
기업들이 수많은 제품들을 동시에 양산하는 이유로는 몇가지를 짚어볼 수 있다. 그 중 하나는 개성/차별화 측면인데 남들이 다 쓰는 것이 아니라 자신의 성향을 나타내는 고유한 장치라는 인식이 잡혀졌기 때문이다. 즉 하나의 패션 아이템으로 생각하는 것이다.
매번 새로운 보드를 설계하고, 시스템을 바꾸는 것은 어렵다. 그렇기 때문에 대부분은 디자인만 바꾸거나 주요 기능 하나씩을 넣고 뺀 뒤에 '다른 제품'으로 출시를 한다. 그러나 이렇게 추가된 '특수 기능'은 일반 사용자들이 사용함에 있어서 큰 영향을 주지 못하는 경우가 있다. 이는 사용자에게 더 많은 선택의 기회를 제공한다는 장점이 있다.

그렇다면 서비스는?
이렇게 많은 제품을 공급하게 됨에 따라, 제품의 Life-Cycle이 줄어드는 문제점이 발생하고 있다. (물론 이것이 모든 이유는 아니겠지만, 그 중 하나임은 확실하다.) 간단한 예를 들자면, 삼성의 제품들의 고객지원은 그리 길지 않았다. YP-T8, YP-Q1, SCH-B660, 햅틱 등.. 본인 혹은 주변사람이 쓰던 제품들의 SW업데이트 등은 적은 시간동안만 이루어졌고 이후에는 잠잠해졌다.
비슷한 시스템과 구조를 가지기 때문에 이를 '많은 제품에 신경을 못쓴다'고 보기엔 어렵다. 많은 제품을 출시하고, 사용자들이 그것을 선택하도록 '제품에 대한 열정을' 마케팅에 쏟을 뿐만 아니라, 서비스에도 똑같이 적용해야 한다고 생각한다.

제품 종류만 무작정 늘려놓고 '우리는 이렇게 많이 만들어내고 있습니다' 하는 것 보다는, 하나를 만들더라도 잘 만드는 것이 낫다는 것이다.
이는 펌웨어/OS의 지속적인 업그레이드 뿐만 아니라, 사용자의 불만이나 제안을 적극적으로 수용하여야 하며 무엇보다 '자사의 이익만'을 추구하는 태도를 버려야 한다. 옴니아2의 경우, OEM으로 깔린 수많은 항목들이 실질적으로는 그닥 필요가 없거나, 디자인에만 신경쓰다보니 성능을 신경쓰지 않은 듯한 상황을 보여주고 있다. 이는 사용자들이 자사 앱을 더 많이 사용하기 위한 측면으로 제공된 것으로 보이나, 스마트폰의 강점 중 하나인 '사용자 고유화'면에서는 오히려 약점이다.

애플은 여러 스마트폰 제조업체 중 하나일 뿐이며, 삼성도 이들 중 하나일 뿐이다. 그리고 이들은 지금도 새로운 제품을 출시하기 위해 R&D를 계속하고 있다. 이둘의 우열관계를 하드웨어/소프트웨어 측면에서 가리고 이것으로 여론을 조성(언론이던 입소문이던 간에)하는 것은 잘못된 태도라 생각한다. 오래된 벽돌폰을 쓰던 최신 스마트폰을 쓰던 내 맘에만 들면 될테니깐, 그리고 특히 스마트폰의 경우 그 특장점들을 다 써보지도 못할테니깐. (쓰더라고 그것이 '매일같이' 쓸정도로 강력한 것이 아닌 이상.)

언론에서 이 둘의 비교를 줄기차게 하고 있길래 본인의 의견을 짧게 적어본다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

아래 내용은 본인이 아는 범위내에서 견해를 쓴 것입니다.

각종 언론 매체를 통해 스마트폰이 다루어지고, 이에 대한 기사들이 작성되고 있다.
대체적으로 스마트폰으로 이런 것도 할 수 있고, 저런 것도 할 수 있다와 같이
어떻게 보면 스마트폰 대중화를 부추기고 있다.

최근에는 삼성의 '갤럭시 시리즈'와 애플의 '아이폰'이 비교대상에 놓이게 되면서, 이들의 차이점과 장/단점을 분석하는 내용들을 자주 접할 수 있었다. 사실 하드웨어 스펙을 논한다는 것 자체도 썩 좋은 비교는 아니다. 두 대상은 플랫폼 자체도 다를 뿐더러, 강점이 다르기 때문에 그것만 가지고 절대적인 결론을 내리기는 힘들다. (예를 들어, 옴니아1과 옴니아2의 비교는 절대적인 결론을 낼 수 있을지 언정.) 물론 나는 이런 것에 대해 많은 지식을 가지고 있지 않기 때문에 나 또한 어떤 비교를 할 수 없다. 이런 비교들은 주로 얼리어뎁터들에 의해 행해진다.

학교 상담실에서 컴퓨터 업무를 하던 도중 선생님이 나에게 질문을 하셨다.
"요새 스마트폰이 왜 뜨는거야? 기존의 폰하고 뭐가 다르길래 매스컴에서 그러는거지?"
난 한마디로 답변을 드렸다. "기존 폰에 비해 센서 등 각종 하드웨어 스펙이 증가되었고, 대중적인 플랫폼 (WM, iPhoneOS 등)을 채택하였고 (이는 사용자의 현 상태를 잘 반영할 수 있는 '서비스'의 근간을 마련해주었다.), '사용자 정의 범위의 증가'와 (이는 자신만의 소유물을 만들고자 하는 인간의 특성에 의해 장치에 대해 더 애착을 가지게 한다.) 플랫폼 통일화로 인한 '애플리케이션(이하 앱)' 수 증가로 사용자들의 활용도 극대화를 통해 사용자에게 물질적, 서비스적 변화를 가져왔다. 그러나 기존의 폰과 기본 아이디어는 동일하다."

하드웨어를 유저가 사용할 수 있게 컨트롤하는 것이 소프트웨어이고, 그것이 앱이다. 다시말해 스마트폰의 WiFi 어뎁터, DMB 기능을 실행하게 하는 것은 앱이며, 앱이 어떻게 하느냐에 따라 스마트폰의 동작이 달라질 것이다. 똑같은 하드웨어를 가지고도 할 수 있는 것들이 달르므로 앱이 스마트폰의 가치라고 볼 수도 있다. 그렇지만 이것이 '반드시 그 스마트폰만이 할 수 있는 기능은 아니라는 것'이다. 다시말해 '아이폰으로는 영화예매도 할 수 있습니다.'라는 사실을 '아이폰의 장점'으로 소개하기에는 무리가 있다는 뜻이다. '스마트폰의 장점'쯤이라면 모를까.

이렇게 소개되는 '아이폰의 장점'들은 사용자들에게 왠지 스마트폰을 사야될 것만 같은 충동을 강하게 준다. 물론 여기에는 앱 제조사들이 가장 큰 시장인 '아이폰'을 택하여 각종 서비스들을 제공하려 하기 때문에 '아이폰에서만 가능'한 상황이 되어 그렇게 소개될지 몰라도, 대중들에게는 '아이폰' 아니면 안되는 것 같은 인상을 줄 수 있다.

선생님이 내 답변을 듣고 말씀하셨다, 방송에서 하도 스마트폰 스마트폰 하는데 나는 안쓰니깐 왠지 시대에 뒤떨어지는 것 같다고.
대중들에게 정확한 개념정립조차 없이 단순히 스마트폰 열풍을 조장하거나 '아이폰'의 장점을 칭찬하는 식의 기사를 통해 나온 결과가 아닐까 생각된다. 더불어서 평소에 핸드폰을 다방면으로 사용하지 않고 일반적인 폰의 목적으로 사용하던 사람들에게는 스마트폰으로 바꿔야 할 필요성또한 느끼지 못하고 있다.

아이폰 출시로 스마트폰 열풍이 시작되었고 사회적인 변화나 사람들의 관점 변화 뿐만 아니라 정책적인 변화까지 가져왔다. 그러나 이 변화의 중심에 서있는 이용자들에게 정확한 정보를 전달하는 것 또한 필요하다. 물론 IT기술의 대충화로 차츰 세대 간 기술격차를 줄어들 것으로 생각되고 이쯤에서는 스마트폰이 충분히 대중화되어 그러한 문제점이 종식 될 수도 있다. 그렇지만 내가 생각하는,현 상태의 스마트폰 대중화의 문제점은 아직 사용자들이 정체도 제대로 파악하지 못하고 좋대서 샀더니 쉽게 쓸만한 기능도 없거나, 사람들의 스마트폰 사용 장려 대책 (이를테면 IT 선진화 정책)도 마련되지 않은 상태에서 (심지어 정부도 이제서야 유권해석을 내는 상황에서) 기기만 공급한다는 식의 '대중화 시도'는 언젠가는 그 문제점이 촉발될 것이다.

요즘들어 그런 기사들을 너무 자주 봐서 한마디 써봤다. 약간 두서없이 적힌 것 같긴 하지만.

저작자 표시 비영리 동일 조건 변경 허락

크리에이티브 커먼즈 라이선스
Creative Commons License

왜 보안인가?
요즘 USB 메모리 (이하 UFD)가 대중화되면서, 많은 사람들이 USB 메모리의 기능을 고려하기 시작했다.
많은 사람들이 고려하는 측면은 바로, '보안' 이다.
이른바 '보안 디스크' 기능으로서, 본인의 데이터를 암호화할 수 있는 부분에서 많은 사람들의 선택을 받는다.
이외에는 다소 전문적인 요소들로서 전반적인 선택의 측면으로 봐서는 '보안'보다는 결정적이지 못한다.

물론 USB 메모리가 '보안'만 지원할 수 있는 것은 아니다. '오토런' 이나 'DOS 부팅', '파티셔닝', 'PnP', 심지어 '포맷'까지 강조한다.

'보안' 기능을 지원하는 UFD는 특별한 것인가?
과연 '보안' 기능을 지원하는 UFD는 특별한 것인가? 제품의 특장점이라 함은, 다른 제품에 없는 기능이거나 그보다 뛰어난 점을 말한다. 시중에 팔리고 있는 몇몇 제품들을 보자.


PnP, 패스워드, 오토런, 파티셔닝, 부팅 기능을 제품 특징으로 강조하였다. (정확히는 부가기능 강조 목적이다.)


보안 파티션, PC Lock, 파티셔닝, 부팅, 암호화, 동기화 기능을 제품 장점으로 표기하였다.


USB 2.0 인터페이스, PnP, 추가 전원 불필요, 패스워드, USB 2.0/1.1 동시지원, USB 부팅, ReadyBoost 를 제품 장점/기능으로 설명하였다.

여기서 언급된 특징들을 주목해야 한다. 과연 이러한 항목들이 제품의 특장점 내지는 우월성을 강조하기 위한 항목으로 사용될 수 있는지 확인해볼 필요가 있다.

뻔한 내용들을 다 지우자.
USB 메모리는 USB 인터페이스를 사용한다. 2000년 4월 이후에 나오는 제품들은 전부 USB 2.0 인터페이스다. (2000년 4월에 인터페이스가 발표되었지만, 상용화 속도를 고려하면 2002~2003년에는 대부분의 하드웨어가 지원하지 않았을까 추정해본다.)
지원 속도는 최대 480Mbps이다. 환산하면 60MB/s. 또한 핫플러깅을 지원한다. 핫플러깅이란 PC가 작동중인 상태에서 장치를 삽입/제거할 수 있는 기술을 말한다. USB 장치는 대부분 전류를 많이 먹지 않으므로 (특히 USB 메모리) USB 2.0의 최대 전류인 400mA로 충분하다. 따라서 외부전원은 당연히 불필요하다. USB 2.0에서는 USB 1.1 장치또한 연결 가능하다. USB 2.0 인터페이스를 따르는 장치는 USB 1.1또한 기본적으로 지원하는 셈이다.

USB 메모리는 저장 장치이다. 저장 장치라면 MBR이라 불리는 영역이 기본적으로 존재한다. 이 영역에서는 MBR 코드와 파티션 정보가 기록되어 있다. (물론 Magic Code도 있다.. 0x55AA) 각 파티션 별로 PBR이 존재한다. 부팅 과정에 있어서, MBR -> 부팅 또는 MBR -> PBR -> 부팅으로 이루어진다. 여기서 말하는 PBR은 활성화 파티션을 말하는데 Windows에서는 이동식 장치에 대해서 한 개의 파티션만 지원하고 기본적으로 첫번째 파티션이 활성화 상태이다. 모든 저장 장치에 있어서, 전부 부팅이 가능하다. 부팅이 불가능한 경우는 존재하지 않는다. Public 영역이 존재하지 않아 위의 부트 프로세스에 진입하지 못하는 경우를 제외하곤 말이다. (디스크 전체가 보안 영역으로 잡히는 등의 상황을 말한다. 하지만 시중에 팔리는 USB는 이런 식으로 가공되어 나오지 않는다.) PBR의 수정만으로 부팅이 안되는 경우는, 부트 프로세스가 MBR에서 끝나는 경우인데 표준 MBR을 이용하여 다시 기록하면 Active Partition의 PBR로 제어권이 넘어오게 된다.

USB 메모리를 통제하는 컨트롤러가 존재한다. USB 메모리에는 컨트롤러라 불리는 반도체가 꼭 들어간다. 이게 없는 USB는 하나도 없다. (물론, 눈으로 안보이는 경우도 있다. 요새는 molding 형이라 하여서 하나의 IC에 메모리와 컨트롤러를 넣어서 단일 칩으로 만든 경우가 있다.) 컨트롤러가 하는 주된 기능은 USB 메모리와 PC의 연결을 중간에서 중계하는 역할이다. 즉 USB 메모리는 반도체에 불과하고 어디에 데이터를 저장해야 하는지는 모른다. 이때 컨트롤러가 위치를 잡아준다. MP Tool에서 설정가능한 Autorun Area나 Private Area, Floppy Area는 컨트롤러에서 메모리의 Region 설정을 통해 (펌웨어 업데이트) 이루어진다.

컨트롤러 차원에서 지원하는 기능이 몇가지가 존재한다. 컨트롤러 제조사 별로 다르지만 명칭만 다를뿐 기본적인 틀은 동일하다. 바로 '보안 파티션 (패스워드/Login 기능)'과 '다중 파티션', 'CD영역 (Autorun Area)이다. 여기서 말하는 다중 파티션은 Windows에서 지원하지 않는 그 '다중 파티션'이 아니라 컨트롤러 차원에서 구분되는 기능이다. 이 경우 Windows에서는 다른 Device로 인식하여 결과적으로는 다중 드라이브의 인식이 가능해준다. (하지만 Windows가 지원하지 못하는 '다중 파티션'은 한개의 이동식 Device에서 여러 개의 파티션을 지원하지 않는다는 뜻이다.) CD영역은 대부분의 컨트롤러에서 지원한다. PC Lock 기능 또한 컨트롤러 차원에서 지원되는 기능이다. (필자가 확인한 바에 따르면 SMI 컨트롤러만 지원하는 듯 하다.) 여기서 모든 컨트롤러라 하지 못하고 대부분의 컨트롤러라 하는 이유는, 시장에 출시되는 대부분의 USB 메모리는 (특히 중소기업의 USB 메모리들) USBest, SMI, Skymedi 중 하나의 컨트롤러를 사용하기 때문이다. 이들 외에도 많다. Transcend 사의 경우 Alcor 컨트롤러를 사용하는 경우다.


다시 USB 메모리 광고를 살펴보자.


이 USB만의 특징으로 내세울 수 있는 점은 없다. (위의 5개 기능은 모든 USB 메모리가 지원한다.)


이 장치의 특징은 암호화/복호화 기능과 동기화 기능이다. (사실 이것들도 번들 SW의 기능이지 UFD의 기능이 아니다.)


이 제품이 내세울 수 있는 특징은 ReadyBoost 기능과 생활방수 기능, 초경량 이라는 부분이다.

번들 SW의 지원 OS는 제품의 지원 OS와 다르다.
이제 번들 SW에 대해서 말해보자. 보안 파티션 로그인 프로그램이니 파티셔닝 프로그램이니 이런것들은 해당 컨트롤러의 SDK를 이용해서 제작된다. 암호화/복호화 프로그램이나 동기화 프로그램 등은 컨트롤러의 SDK를 이용하지는 않는다. 하지만 이들은 전부 Windows 에 맞추어 제작된다. 즉 USB 메모리의 지원 OS는 Windows, Linux, MAC 등 다양하게 적혀 있고 심지어 타 장치의 호환성을 강조하기도 한다. 하지만 번들 SW의 지원 OS는 이와는 다르다. 제대로 된 기능 작동은 Windows 하에서만 이루어질 수 있다. 몇몇 사람들은 타 장치 (네비게이션, PMP 등)에서도 보안 파티션을 사용할 수 있으리라 생각한다. 물론 절때 안된다.

올바른 사실을 구매자들에게 알려야 한다.
컨트롤러에서 모두 지원하는 기능임에도 불구하고, 보안 디스크  프로그램을 (컨트롤러 차원의 기능인데도) 별도로 판매하는 일부터, CD영역을 대량 구매시에만 지원해주거나, USB/저장 장치의 특성을 자사 제품만의 특성인 것 마냥 강조하는 행동이 이루어져서는 안된다. 구매자들은 바른 안목을 가지고 제품 선택을 해야 하고 말이다. 또한 컨트롤러 종류 등의 정보에 대한 공개도 이루어져야 한다. 사용자들에게 공개되는 정보는 극히 일부에 불과하다. 공개되지 않은 정보들은 USB 커뮤니티 등을 통해 공개되고 있는 실정이다. 컨트롤러나 메모리 (반도체) 간의 비교 등 사용자의 선택의 폭 또한 넓어져야 한다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

공격과 방어는 종이 한장 차이입니다.
방어도 결국은 autorun 이용 악성 프로그램이나 다른 방어 프로그램을 공격하고
공격도 다른 악성 프로그램이나 방어 프로그램을 공격하고, 악성 프로그램이 공격당하는 것을 막아야 하기 때문이죠.

즉, autorun에 지정되는 주체가 되는 파일이 방어목적이면 방어프로그램,
공격목적이면 공격프로그램입니다.

그러면 긴말할것 없이, 공격법을 아나 방어법을 아나 별 차이가 없다는 소리죠.
공격법을 막는게 방어법이면 되니깐요.
필자가 알고있는 방법들을 전부 나열하고 설명해보겠습니다.

(1) 공격 : autorun.inf에 덕지덕지 붙이기
open=... 하지만 말고
shellexecute=...
shell\open\command=...
이런식으로 덕지덕지 붙이는 겁니다. 보통은 사용자가 open명령만 우회하려 시도하는 경우가 있는데
이때 이렇게 지정되어있다면, 충분히 악성 루틴을 탈 확률이 증가하죠.

방어 : 그냥 살포시 파일을 지워주면 됩니다. 파일을 지우면 open이고 나발이고 다 무용지물이겠죠.

(2) 공격 : autorun.inf에 랜덤한 주석 삽입
바이러스 검사 툴을 우회하는 방법입니다.
[AutoRun]
open=...
;adslkhgidlagdibdibysdibasdibdasibduas
shellexecute=...

이런식으로 중간에 ;로 시작하는 문장, 즉 주석을 넣으면 됩니다.
가끔씩 autorun.inf의 MD5와 같은 해시값으로 감염 여부를 체크하는 경우가 있습니다.
그러한 탐지 방법을 우회하는 방법입니다.

방어 : 그냥 살포시 파일을 지워주면 됩니다. 파일을 지우면 주석이고 나발이고 다 무용지물이겠죠.

(3) 방어 : autorun.inf라는 폴더 생성하기
autorun.inf파일이 생성되지 않았다면, 이러한 이름을 가지는 폴더를 생성할 수 있습니다.
이는 원천적으로 autorun.inf가 생성되는 것을 막습니다.

공격 : CreateDirectory 와 같은 API를 감시하고 있다가 그러한 폴더 생성이 들어오면 바로 ERROR를 내버리면 됩니다. DLL 인젝션을 해도 되고, Code 인젝션을 해도 됩니다. 인젝션을 통해서 Hooker DLL을 넣는 방식이 아니면, 커널 드라이버 정도 커널에 올려서 후킹을 해도 됩니다. 워짜피 커널 메모리 영역은 모든 프로세스에 대해 동일한 물리 메모리 주소 참조가 되기 때문이죠.

(4) 방어 : 특정 폴더의 ACL 박탈
autorun.inf 파일 또는 폴더의 ACL을 박탈하여 사용자가 이를 조작할 수 없도록 합니다.
NTFS 방식의 하드디스크에는 보안 기능이 적용되어 있어서 ACL (Access Control List)에 따라서 접근을 제어합니다.
따라서, 특정 폴더의 ACL을 박탈하게 되면 접근을 제어할 수 있습니다.

공격 : 시스템 권한의 허점을 이용하여 NT AUTHORITY\SYSTEM 의 권한을 얻은 상태에서 ACL을 다시 작성후 감염을 시킵니다. XP이하에서는 UAC기능이 없으므로 적합.

생각나면 또 마저 적겠습니다..

저작자 표시 비영리
크리에이티브 커먼즈 라이선스
Creative Commons License

사실 이 부분에 대해서는 그닥 쓸 수 있는 내용이 적습니다.
이유는, 본래 이 글에서 논하고자 했던 것은 autorun을 이용한 공격에 관한 것이고
잠입 이후에는 바이러스 본체는 각자의 활동을 하기 때문이죠.

그러나, autorun을 이용해서 잠입했다 하더라도 공통적으로 수행하는 것들이 있곤 합니다.
그런 것들에 대해서 알아보겠습니다.

시작에 앞서, 컴퓨터는 autorun으로 이미 감염이 된 상태라고 가정합시다.

  1. 나의 존재를 사용자에게 알리지 마라 - SHR 속성, 레지값 강제하기
  2. 내가 곧 시스템, OS와 동거동락 (은폐)


1. 나의 존재를 사용자에게 알리지 마라 - SHR 속성, 레지값 강제하기

일단 잠입에 성공했으면 최대한 시스템에 붙어서 사용자를 괴롭혀야 합니다. 그 노력의 일환으로 몇가지 행동들이 수행되곤 하죠. 물론 호환성을 극대화하여 많은 PC에서 효과를 보기 위해, 모든 PC에 공통적으로 존재하는 사항들만을 이용합니다.

첫번째 알아볼 수단은 바로 SHR 속성입니다. 물론 SHR 이라는 속성은 없습니다. System, Hidden, Readonly 속성의 앞글자죠. Hidden이나 Readonly만 주면 될것이지 뭐하러 이렇게 복잡하게 주느냐 하면..

System 속성은 조금 뒤에 나올 '보호된 운영체제 파일 숨기기'에 활용할 목적이 있습니다.
Hidden 속성은 조금 뒤에 나올 '숨김 파일 표시 안함'에 써먹으려고 하는 것이고
Readonly 속성은 무단 수정을 방지할 목적으로 쓰입니다. 만약 R 속성이 걸려있다면 R 속성을 풀은 후에야 CreateFile 등의 API로 기록이 가능할 것이며, 수정 작업이 가능할 것입니다. 그러면 R 속성을 걸고, SetFileAttributes 함수를 전역 후킹해서 해당 파일이 R 속성을 풀으려는 것이 시도되는 경우, 그냥 튕겨낼 수 있는 상황을 유도할 수 있습니다.

분명한 결론은, 시스템에서의 각종 제약사항을 가지는 속성을 잔뜩 걸고 해재를 하는 함수를 먼저 선점할 수 있는 근간을 마련하게 되기 때문에 PC에서 '갑'의 상황을 가질 수 있겠죠.

이제 레지값 강제하기에 대해서 알아보겠습니다.
아래 창은 [폴더 옵션] 창입니다. (필자 PC인 Windows XP, 고전 테마에서 캡쳐)


'보호된 운영 체제 파일 숨기기', '숨김 파일 및 폴더 표시/표시 안함' 이 두개가 레지값 강제의 핵심입니다.
'보호된 운영 체제 파일 숨기기' 의 경우는 다음과 같은 레지스트리 값을 가지며, 매 변경시마다 Notify 메세지를 뿌리는 듯 합니다.
Key : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
        Advanced\Folder\SuperHidden
(파일 표시 상태)
Value : CheckedValue = 0
           DefaultValue = 0
           UncheckedValue = 1
(파일 숨김 상태)
Value : CheckedValue = 1
           DefaultValue = 1
           UncheckedValue = 0

라고는 하는데, 바로 바뀌지는 않을겁니다. 레지스트리가 캐싱되어 있어서 바로 반영은 안되는듯 합니다.

'숨김 파일 및 폴더 표시/표시 안함' 은
Key : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
        Advanced\Folder\Hidden

하위에 같은 같은 식으로 그러한 키가 존재합니다.

그럼 왜 이 두개의 레지스트리 값을 강제하는가 하면..
1. 어쨌든 사용자는 레지스트리 값을 변경하여 Notify를 해야 변경할 수 있습니다.
2. 그러나 이 둘이 풀려버리게 되면 앞에서의 System,Hidden 속성이 그냥 개똥이 되어버립니다.
3. 바꾸던 안바꾸던 1,2초에 한번씩 계속 레지값을 바꿔주고 바뀌었을때 Notify를 해준다면, 사용자의 변경을 무력화할 수 있습니다.

그런데 레지값을 바꿀려면 프로세스를 실행하거나 스레드로 작동을 해야할텐데.. 어떻게 해야될까요?
답은 간단합니다. autorun.inf에 달라붙는 놈은 단순히 수송책일 뿐이고 이놈이 DLL을 까놓고 여기에 이러한 악성 루틴을 넣고 멀쩡한 프로세스에 넣어서 돌리면 됩니다.
이것은 OS와 사용자 모두를 속이는 은폐에 관한 내용이므로 다음 파트에서 이어하겠습니다.

2. 내가 곧 시스템, OS와 동거동락
"
어느날 갑자기 이상한 DLL이 굴러와서 하는 짓이
'내가 곧 시스템이요' 하면 어째야 할까?
당장 무례한 놈을 끌어내야하지 않은가?

근데 결국은 사용자도 OS하에 작업을 하는 만큼, OS를 끼고 도는 놈이 이긴다.
그런데 사용자가 기계인가? 그렇다고 컴퓨터 속으로 들어가 백병전을 벌이고 올까?
아무래도 바이러스가 유리한 셈이다.
"

앞에서도 레지값을 강제하는 방법에 대해서 봤지만, 사용자를 골탕먹이기 위한 방법들로만 가득차 있습니다.
OS를 끼고 돌거나 속이는 경우에는 사용자도 같이 속아버리기 마련. 즉 컴퓨터를 속이는 것이 최고의 방법인데

그렇다면 자신의 코드를 대놓고 실행하는가? 그러면 없애기도 쉽겠죠.
바이러스로써는 자신이 최대한 탐지되지 않으면서 자신의 코드를 실행할 수 있어야 합니다.
여기서 몇가지 방법들을 제시해볼 수 있습니다.
  1. 대놓고 프로세스 생성. 커널에서 ObOpenObjectByPointer 와 같은 함수 후킹으로 접근 원천 차단
  2. 이미 있는 프로세스에 DLL 인젝션 (코드 삽입 기술)
  3. 커널에서 파일,프로세스 은닉으로 사용자 몰래 프로세스 생성,작업
  4. BHO로 등록.
  5. 기존 커널 수정. 예를 들면 msgina라든가 말이다.

1번은 어떻게든 까고 보면 후킹을 무력화할 수도 있을 뿐만 아니라, 커널 드라이버를 로드하기 위해서는 권한이 필요합니다. 이는 탐지될 위험을 극대화하므로 좋지 않은 방법입니다.
2번을 성공적으로 수행하기 위해서는 종료되면 블루스크린이 나는 Critical Object, 즉 시스템 프로세스에 인젝션을 하면 됩니다. 여기서는 CreateRemoteThread->LoadLibrary가 제일 간편합니다.
3번또한 후킹과 커널 접근의 문제가 있습니다.
4번은 키만 제거하면 되니 불안정하겠고
5번은 메리트는 있으나, 번거롭긴 하죠.

2번의 방법이 제일 무난합니다. DLL Injection에 대해 간단히 설명하자면, 이미 존재하는 프로세스에 DLL을 강제로 로드하게 하는 기술입니다. 관련 글은 필자의 블로그에 있을겁니다. 여기서는 프로그래밍 적인 내용을 고려할 필요는 없으므로 패쓰..


이렇게 해서 DLL을 시스템 프로세스에 주입을 했다고 합시다.
그렇다면 일반 사용자들은 DLL이 주입되었다는 사실조차 모릅니다.  왜냐하면 비록 모듈 리스트에는 나오긴 하지만, 그마저도 프로세스처럼 대놓고 나오는 것이 아니기 때문이죠.
또, 모듈 리스트를 구하는 API에는 EnumProcessModules 라는 API도 있긴 하지만, 이를 후킹하여 결과값을 조작한다면 노출마저 시키지 않을 수 있죠.

그럼 DLL이 주입되었다는 사실을 알았다고 칩시다. 어떻게 없애야 될까요?

보통은 해당 프로세스를 종료하게 합니다만 시스템 프로세스에 인젝션 했으면 이 방법은 자신의 시스템을 죽이는 꼴입니다.
IceSword 등의 도구로 강제 DLL 언로드를 할 수 있습니다. 이는 PEB의 LIST_ENTRY 형을 가지는 모듈 리스트를 조작하면 됩니다.

근데 또다른 Watcher 스레드 (감시자 스레드)가 DLL의 언로드 여부를 계속 보고 있다가 없으면 또다시 찔러넣고 한다고 합시다. 그러면 IceSword같은 프로그램도 병신이 되는겁니다. 개처럼 뛰는 노가다에는 약도 없죠.
그러면 해당 Watcher 스레드를 찾아야 합니다. 근데 프로세스야 부모 프로세스ID로 실행시킨 놈을 찾지만, 스레드는 어떻게 해야될까요? 사전에 후킹과 같은 작업을 해놔서 감시를 하지 않는 이상은 거의 추적이 불가능합니다. 게다가 그 Watcher 스레드가 DLL 인젝션을 시스템 프로세스에서 지시를 내리게 한다면, 추적을 충분히 엿먹일 수 있습니다.


위에서 살펴본 두가지의 유형에는 공통점들이 있습니다.

  1. 불가항적으로 실행되어야 하는 시스템 프로세스에 삽입함으로서, 자기 자신의 존재와 종료를 최대한 제한할 수 있음.
  2. 최소의 권한을 사용함으로서, 추적을 최대한 피할 수 있음. (특수 권한 요청이야 기록을 남길 수 있다고 치지만, 기본 권한 등까지 모니터링을 하지는 않기 때문;;-이 악물고 로그 분석 전까지는..)
  3. 시스템 의존적인 부분의 이용을 최대로 많은 시스템에서 악성 루틴을 실행할 수 있게 함.

결국은 자기 자신의 생존에 관하여 끈질기게 해주는겁니다.
때로는 ZwSetSystemInformation 등의 함수를 이용해서 강제로 커널에 드라이버를 로드할 수도 있지만, 이는 적당한 기술을 필요로 하는지라.. 그렇지만 커널을 손에 넣으면 더 많이 시스템을 가지고 놀 수 있다는 점은 무시할 수 없습니다.

다음 파트에서는 최대한 autorun 공격을 우회하는 방법, 즉 시스템의 여러 편법들을 이용해서 최대한 방어를 하는 방법에 대해서 알아보겠습니다.

저작자 표시 비영리
크리에이티브 커먼즈 라이선스
Creative Commons License

급하거나 대충 읽어볼 사람들은 굻은 글씨와 밑줄, 빨간 글씨만 읽어도 문제없습니다.
다만 내용 이해에는 약간의 어려움과 응용에 어려움이 있을 수도 있겠죠;?

일반적으로 Autorun.inf를 이용한 공격 방법이 몇가지가 있습니다. (주로 처음에 PC에 달라붙기 위한 수단이죠.)
그리고 백신 등의 탐지를 우회하기 위한 방어 수단이 몇가지가 있습니다. (주로 감염 후에 취하는 동작들입니다.)
그리고 사용자의 눈을 속이기 위한 회피 수단이 몇가지가 있습니다. (주로 감염 후에 취하는 동작들입니다.)

이제 필자가 겪음으로써 알아낸 정보들을 바탕으로 오토런 공격에 대해서 능력껏 까발러보겠습니다.

1편. 사용자를 속여라, autorun 파일의 눈속임-확장자의 기술
2편. 컴퓨터를 속여라, 은둔형 외톨이로 살아가는 바이러스
3편. 선제 공격, 방어를 위한 전진 기지

1. 사용자를 속여라, autorun 파일의 눈속임-확장자의 기술
상용 소프트웨어 설치 CD 등지에서 볼 수 있는 autorun.inf는 다음과 같은 형식을 가지게 됩니다.

[AutoRun]
open=Setup.exe
icon=Setup.exe,0

USB에 맞추어 사용하는 경우에는 다음과 같이 쓰기도 합니다.
[AutoRun]
open=Launcher.exe
icon=Icon.ico
label=toolz-USB
shell\lost=제 USB를 찾아주세요
shell\lost\command=Lost.exe
shell\home=홈페이지 열기
shell\home\command=iexplore http://toolz.tistory.com

open은 실행 명령을 뜻합니다.
icon은 말그대로 아이콘 지정이고
shell\Xxx는 Xxx라는 항목을 생성하게 합니다. (오른쪽 컨텍스트 메뉴)
그리고 shell\Xxx\command라는 항목에서 Xxx라는 항목을 클릭했을 때의 동작을 명기해주죠.

만약 shell\open 을 했을 경우.. 기본적으로 열기 동작을 덮어쓰게 됩니다.

여기서 감염체가 취해야 하는 동작은 '실행'입니다.
즉, 사용자 또는 시스템이 감염체를 실행하게 해야합니다.

위의 관점을 가지고 있는 상태로.. 다시 autorun.inf를 봅시다.

열 수 있는 방법을 최대한 많이 가지는 것이 감염 입장에서 유리할 것입니다.
그러면 위의 open, shell\open 말고 또다른 가능성 들에 대해서 생각해봅시다.

shellexecute라는 놈을 추가할 수도 있습니다.
이쯤 되면, 사용자가 취하는 어지간한 동작 들의 길목에서 감염체를 실행할 수 있습니다.

완성된 코드를 볼까요?
[AutoRun]
open=Toolz.exe
shell\open\command=toolZ.exe
shellexecute=tOolz.exe

그러나 백신 제조자들이 샘플 비교를 통해서 진단을 해낼수도 있습니다.
이에 따라, autorun.inf에 주석을 삽입하여, 이러한 진단 방법에 어느정도 타격을 줄 수 있습니다.
다음 코드를 보면..
[AutoRun]
;asdpbfhbcwknxzyubdomxhvbdl;mxjbxlnz;
open=Ghost.exe
;dflhauhfdcnmcnocncvcxbn;ouixddxbidasbduobdi
shell\open\command=Ghost.exe
;fadbdfuydbfodyb
;das;dhsna8oadgugdatidafdatrcrczpojzojzpjmno
shellexecute=Ghost.exe

그래봐야 실행되는 것은 같습니다만, 진단을 피하는 효과를 줍니다.

그럼 이제 autorun.inf에서 할 수 있는 것들은 끝났습니다.
하지만 확장자에도 숨겨진 사실이 있습니다.

보통, 실행 가능한 파일 (일반적으로 PE 포맷을 가진 파일)의 확장자는 EXE 입니다. 도스용 프로그램이 COM이고요.
화면보호기 또한 PE 포맷을 가지고 있습니다. 확장자는 SCR이지만, 결과적으로는 일반 프로그램과 다를 것이 없습니다.
다시 말해서, 확장자가 EXE가 아닌 SCR이더라도 감염체의 실행이 가능하다는 점입니다.
따라서 [자세히 보기]를 통해서 파일 형식을 보면 '화면 보호기' 로 되어있을 것입니다.
이는 몇몇 백신들이 실시간 감시 등에서 EXE,DLL파일만 검사하게 하는 경우가 있는데, 이를 회피할 수 있습니다.



또 있습니다. PIF는 COM 등의 도스 프로그램 바로가기 입니다. 그러나 EXE 파일의 확장자를 그대로 PIF로 변경하면, 잘~ 실행됩니다. 자세한 이유는 모르겠으나, 확장자가 pif로 바뀌면, Windows 탐색기 에서는 확장자 편집을 할 수 없습니다. PIF 뿐만 아니라, BAT,CMD 등의 배치파일 형식도 PIF와 같은 현상을 일으킵니다.

이제 확장자를 통한 사용자,백신의 눈속임도 알아보았습니다.
이번 내용을 정리해보면..

- Autorun.inf 를 통한 감염체 실행
(1) open 명령 사용
(2) shell\open 명령 사용
(3) shellexecute 명령 사용
(4) 중간에 강제로 주석 삽입으로 몇몇 백신 감시 우회 가능

- 확장자 변경
(1) SCR, 화면 보호기 형식
(2) PIF, DOS 바로가기 형식
(3) BAT, 배치파일 형식
(4) CMD, NT 배치파일 형식

언급된 8개의 방법은 autorun, 확장자를 이용한 감염 방법, 우회 방법들이며 실제 감염체 실행은 이들의 사용 또는 적절한 조합으로 이루어 집니다.

다음 파트에서는 감염 후 탐지, 원상 복귀를 방해하기 위한 동작들에 대해서 알아보겠습니다.
저작자 표시 비영리
크리에이티브 커먼즈 라이선스
Creative Commons License