2013년 5월 30일 목요일

대한민국 국내 인터넷 뱅킹에 대한 해킹 시뮬레이션 - 개인정보+공인인증서+보안카드


 2013년 5월 28일 매일경제 신문 1면에 올라온 기사 - '뻥 뚫린' 공인 인증서 - 에 대한 분석 차원에서 작성한 것이다.

- 해당 내용은 2006년 및 2011년 이전 에 금융감독위원회 및 경찰청, 다수 금융기관에 그 가능성에 대해서 알린 바가 있으므로, 이를 모방한 범죄가 발생하는 모든 상황의 책임은 이를 예방하기 위한 활동을 해야 하는 정부 기관 및 수사기관에 있다고 할 것이다. -


 특정 사건에 대해서 해킹을 시뮬레이션 하는 목적은 해당 사건을 방지할 수 있는 기술을 만들고 제도를 보완해서 동일한 수법을 이용한 사건이나 유사한 사건을 막자는 것이 가장 큰 목적임을 미리 밝힌다. 그러므로, 해당 방법을 이용해서 범죄를 계획하거나 실행하는 경우에 법에 저촉될 수 있음을 미리 밝힌다.

  1. 타겟 선정 기준
    • 가장 큰 전제는 대한민국 국민 대다수의 개인 정보는 유출되어 있다는 점이다.
    • 쇼핑몰 거래 내용 및 안전 거래 등의 정보를 통해서 계좌 정보를 확보할 수 있다는 점이다.
    • 개인 간의 이메일을 감시하거나 문자 메시지를 감시함으로써 간단하게 계좌 정보를 확보할 수 있다.
    • 거래가 지속적으로 있는 계좌는 쉽게 닫히지 않으며, 항상 여유 잔고가 충분하게 존재할 가능성이 있다. 
    • 인터넷 뱅킹 및 텔레뱅킹을 주로 사용하고 있음을 확인한다. 
    • 다른 접근 방식으로 이미 설치되어 있는 좀비 프로그램을 이용해서 수집된 정보를 기반으로 해서 접근하는 방법이다.
  2. 접근 방법 설계
    • 사용자 컴퓨터 및 스마트폰에서 사용 기록을 확보해 줄 좀비 프로그램의 삽입이다.
    • 좀비 프로그램의 삽입을 위해서 가장 많이 사용하는 방법이 지인을 사칭해서 좀비 프로그램이 설치되는 코드가 포함된 플래시 파일 또는  ActiveX 설치를 유도하는 사이트 접근이다.
    • 최소한 1년 이상(공인 인증서 갱신을 포착해야 함으로)의 시간을 투입해서 해당 사용자의 정보를 걸러낼 필요성이 있다.
    • 공인인증서 암호는 키보드 입력을 통해서 확보가 가능하다. 대부분의 공인인증서 접근은 ActiveX를 이용한 프로그램을 통하는데, 보안이 아무리 잘되어 있어도 키입력을 전달하는 파이프라인 메모리를 직접 감시하면 현재 환경에서 구별하는 것이 거의 힘들다. (키보드 I/O를 가로채는 키로거는 대부분 안티바이러스 프로그램이 찾아 내지만, ActiveX에 직접 파이프 라인 메모리를 확인하는 것을 감지하는 안티바이러스 프로그램은 매우 드물다. 일단 Microsoft사가 이에 대한 감지 및 보안 방법이 없음을 이미 공표한 바 있다.)
    • 공인인증서 암호 확보에 실패 했다면 공인인증서 재발급 프로세스를 위해서 접근하게 된다. 재발급하게 되면 암호를 임의대로 입력할 수 있다.
    • 최근에는 국내 안티바이러스 프로그램 들이 공인인증서 파일에 대한 접근을 감시하기 때문에 쉽지 않지만, 안티바이러스 프로그램이 설치되어 있지 않거나, 무력화가 가능한 경우에 공인인증서 파일을 유출해서 전송한다. (공인 인증 시스템을 위한 전송이 아니어도 파일 자체만으로 공인인증서 효력이 나타나게 되는 은행 시스템도 있다.)
  3. 보안카드 작성
    • 은행 거래 시에 요구되는 보안카드의  번호 위치는 빈번하게 일치하기 때문에 하나의 번호 위치키인 4자리를 확보하는데 오래 걸리지 않는다.
    • 좀비 프로그램이 설치되어 있는 경우에  은행 거래 시마다 이를 기록해서 해당 사용자의 보안카드를 작성하게 된다. (주로 URL을 감시해서 기록 정보를 확보하는 형태가 이용된다.)
    •  보안카드의 완성도가 75% 이상이 되면, 거래 시에 보안카드 번호 입력 제한 횟수 이내에 완료를 할 수 있다.
    • 가상키보드나 스마트폰을 사용하는 경우에는 화면 캡쳐와 입력 좌표를 대조해서 해당 위치의 이미지를 활용한다.
    • 보안카드 작성과 관련해서는 이전에 텔레뱅킹과 관련된 사건도 있다. 아파트 건물의 전화단자함에 일종의 도청 장치를 해놓고 텔레뱅킹을 사용하는 신호만 걸러내서 계좌번호와 비밀번호, 보안카드 번호를 확보한 사건이었다.)
  4. 공인 인증서 재발급
    • 공인인증서를 확보했으나, 암호를 확보하지 못한 경우에 선택을 하게 된다.
    • 공인인증서 재발급을 위해서는 이름, 주민등록번호와 해당 명의의 계좌번호, 보안카드 발행번호, 보안카드 키값이 필요하다.
    • 1년 정도 시간 동안에 감시를 했다면 충분히 확보할 수 있는 정보 들이다.
    • 이 정보를 이용해서 공인인증서를 발급 받는다.
  5. 계좌 인출 시도
    • 개인 계좌의 1회 인출 한도 금액은 천차 만별이다.
    • 그러므로, 최대한 적은 횟수에 가능한 많은 금액을 빼내야 한다.
    •  차명 계좌(대포 통장)나 가상 계좌 등을 이용해서 인출 시도 후 성공하면 즉시 현금 인출하는 방식을 사용한다.

 위의 방법을 현재 100% 막을 수 있는 방법이나 시스템을 갖추고 있는 은행은 현재로서는 없다.

 여기에 추후 쓸 스미싱 기법을 합쳐 놓으면, 과연 막을 수 있을까 싶다.

2013년 2월 2일 토요일

Game에서 통계의 의미?

 통계는 Game을 기획하는 단계에서 가장 고려가 되지 않는 부분이지 않을까 해서 Server 개발자로서 기획에 바라는 Game에서 통계의 이야기를 해 보기로 한다.


 1. 통계에서 중요한 것은 핵심 요소 이다.

Game에는 다양한 요소가 어우러져서 이루어집니다. User, Rule, Character, Play, Money, Manage 등 Game 장르 나 플랫폼에 따라서 각각 다른 중요도를 띄게 됩니다. 통계를 먼저 요구할 때는 이 중에서 어느 것을 핵심 요소로 삼아서 다른 요소를 끼어 맞출 것이냐가 전제가 되어야 합니다.
 예를 들어서, RPG Game이라면 실제로 User는 Character에 의존해서 Game을 진행합니다. 그렇기 때문에 User의 Game Pattern을 분석하고 싶다면, Character를 핵심으로 해서 통계를 작성함으로써 User가 Character를 어떻게 Play하고, 어떤 Rule은 존중하고 어떤 Rule은 무시하는지 알 게 됨으로써 새로운 Rule을 만들고, 그 Rule을 Character에 어떻게 적용함으로써 재미 요소를 끌어낼 것인지 결정할 수 있게 됩니다.
 이렇게 운영되고 있는 Game의 재미 요소를 극대화하기 위해서 필요한 것이 통계라는 점을 고려한다면, 어떤 것을 핵심 요소로 삼아야 하는 지에 대해서는 기획 단계에서 먼저 고민을 해 주는 것이 맞지 않을까?
-핵심 요소만 부각시키고 나머지 요소를 낮추어서 보겠다는 이야기가 아니라, 핵심 요소를 기반으로 해서 다양한 요소를 통계로 묶어서 보여주겠다는 이야기라는 점을 인식해야 합니다. 경제나 사회 쪽에서 사용하는 통계 툴처럼 다양성을 모두 고려한 통계 작업을 진행하는 것은 Game에서는 어렵습니다. 대신 사용자가 어떻게 Game을 하는 지 Data를 수집하는 것은 매우 쉬운 일이니 이를 바탕으로 해서 Game 기획과 System을 개선해 나갈 수 있다면 가장 좋은 모범이 되지 않을까 싶다. 


 2. 통계에서 불변의 요소는 바로 시간이다.

인간도 시간에서 자유롭지 못하듯, Game도 시간에서 자유로울 수는 없다. User마다 Game에서 제공되는 시간이 다르다면, User간의 교류는 불가능하게 될 수 밖에 없다. 또 System에서 시간에 따라 User에게 제공되는 결과도 모두 다르게 인식된다는 것을 의미 한다.
통계에서도 마찬가지 이유로 시간은 불변의 것으로 취급받아야 한다. 시간을 중심으로 해서 변화되는 요소를 확인하고자 하는 통계라면, 그 대상에 대해서 시간은 동일한 규칙으로 작용되어야 한다. 동일한 규칙이 아니라면 혼돈으로 가득차게 되어서 결과적으로 모든 행위가 의미가 없어지게 될 것이기 때문이다.
통계에 시간적 혼돈이 개입된다면 통계 자체의 의미가 사라지게 되기 때문에 혼돈을 덜 일으키기 위해서 가장 먼저 해야 할 일이 바로 모든 요소에서 시간은 동일하다라는 것을 확인하는 것부터 시작해야 한다.
기획의 설계 단계에서 시간을 어떤 식으로 다루어야 할 지에 대해서 고민할 필요성은 없지만, 설계가 완료된 시점에서 운영으로 넘어가는 단계에서 시간이 가장 큰 고려 대상이 된다. 설계에서 부각된 요소를 운영에서는 관리 측면에서 점검을 하고, 이를 가능하게 할 수 있는 통계를 요구하게 된다. (개발 입장에서는 설계 단계에서 통계에 필요한 요소를 먼저 언급해 주면 운영 단계에서 논의하는 것이 빠르게 된다.) 고정된 시간 축을 중심으로 어떤 요소에 대해서 통계를 작성해야 할지 결정할 수 있게 된다.


 3.통계가 Server Resource를 소모하는가?

당연히 Program이 돌아가면 System의 Resource를 사용하게 되는 것은 당연하다. 그런데, 통계 때문에 Game을 운영해야 하는 Resource가 부족해진다면 문제가 되지 않을까? 통계와 관련된 작업이 많아진다면 당연히 System을 별도로 배정해야 하는 것으로 해결될 수 있을 것이라고 생각을 많이 한다. 그러나, 통계에 필요한 내용이 작성되는 순간은 Game의 진행 과정에 이루어지기 때문에 이미 Game을 운영하는 Resource에 포함이 되어 있다는 것이다. (보통 통계 결과를 보기 위해서 사용되는 Resource 만을 생각하는데, 통계에 필요한 Data를 작성하는 데 들어가는 Resource에 대해서도 생각을 해야 한다.)
 통계 작성을 위해서 필요한 Data 수집은 주로 Database를 통해서 이루어지게 된다. 통계를 위해서 필요한 특정 요소에 대해서 어떤 식으로 Data를 처리할 지에 대해서 구체적인 사항이 결정이 되어 있다면, Database 수준에서 1차적인 Data 확보가 완료될 수 있다. 그러나, 이 부분에 대해서 구체적으로 결정이 되어 있지 않다면, 통계를 위해서 관계를 만드는 작업이 System의 Resource를 소모할 수 밖에 없게 된다. 통계를 보는 동안 Game 진행에 영향을 줄 수 있는 요소가 발생할 수 있다는 것으로 받아 들여도 된다.
 통계에 반영되어야 할 Data를 Game 진행 과정에 녹이는 것도 Server 개발에서 중요한 요소가 된다는 것을 이해했을 것이다. 아무리 작은 통계라 해도, 그 Data를 만들기 위해서 Database 전반과 System Resource를 할당해야 한다면, 문제가 된다는 것이다.


 4.통계 요소를 개발 완료 후 추가하게 되면?

Server 개발이 완료된 후에 통계에 대해서 추가를 하게 된다면, 경우에 따라서는 기존 개발 내용을 번복하거나 전면적으로 수정해야 하는 일이 발생할 수도 있다는 것이 문제의 핵심이다.
기획에서 해당 통계 자체의 기술적 난이도만 고려해서 추가를 요구하게 된다면, 실제 개발에서 해당 통계 요소를 위해서 Game System에서 건드려야 할 Data와 통계를 위해서 어떻게 가공해야 할 지에 대해서는 면밀하게 고려하지 않은 요구라고 할 수 있다. 기획에 이러한 세세한 부분까지 고려해 달라고 이야기하는 것이 아니라, 통계 요소의 추가를 기획하는 단계에서 기존의 Game System에 대해서 조금 더 이해하고 접근하게 된다면, 현재 요구하는 통계 요소를 위해서 필요한 작업에 대해서 목록이 나오지 않을까?
통계 요소의 추가에 대해서는 신중하게 고려해야 하며, 전체적인 System의 변경까지 고려해 가면서 천천히 진행해야 할 요소이다.


 5. 통계를 보기 위해서 별도의 Tool이 필요한가?

통계 결과가 어떤 형태로 표시되는 가는 관리자나 경영 쪽에서 본다면 중요할 수 있다. 하지만, 유의미한 통계 결과를 보여주는 데 있어서 특별한 Tool은 필요하지 않다고 본다. Web 환경에서 실시간으로 통계를 봐야 한다고 해도, Web 기술로 충분히 진행이 가능하다. 그런 상황에서 별도의 Tool을 고집할 이유는 없다고 본다.
특히 Tool을 통해서 Game Server에 접근하는 것은 System Resource와 보안 측면에서도 그렇게 바람직한 것은 아니다. 다수의 사용자가 원하는 때에 통계에 접근할 수 있게 하는 것도 중요한 요소이기 때문에 Tool로 통계를 만드려고 하기 보다는 Web 환경에서 만드는 것이 더욱 효율적일 수 있다. (보통 Tool을 고집하는 이유는 다수의 사용자에 대해서 편리한 관리를 하고 여기에 통계를 붙이겠다는 생각 때문이다. 그러나, 실제로 Tool을 이용하면 복잡도만 높아질 뿐 절대로 편리한 관리가 이루어지지는 않는다.)


 Game 통계와 관련해서 주저리 주저리 글을 써 보았는데, 업무 진행하면서Architect로서 미리 조언하지 못한 부분도 많이 발견이 되어서 좋은 듯 싶다. 의견이 있으면 내용을 더 추가해 나가야 할 것 같다. (아직은 중구난방, 중언부언도 좀 많기는 하지만, 필요한 글인 듯 싶어서 쓰기 시작했다.)

2013년 1월 13일 일요일

대한민국의 정부와 보안업체는 왜 화이트 해킹을 무서워 하는가?

 이유는 간단하다. 보안 방법이 단순히 비밀을 유지함으로써 가능한 방법을 선택할 뿐이라는 것이다.

 기술적으로 안전을 확보하는 Secure 의 개념이 아니라,
 시스템을 보호하는 Security 의 개념이기 때문이다.

 그럼 화이트 해킹(White Hacking)은 기술을 선의로 사용하는 것이다. 시스템이 안전한가 검증해 주고 문제가 발견되면 이를 알림으로써 사고를 예방하는 효과를 목적으로 하는 행위이다.

 화이트 해킹에 대해서 정부에 민원을 넣고, 보안 솔루션을 사용하고 있는 기업에 지적을 하면 돌아오는 답변은 간단하다. 법적으로 불법이니까 하지 말라고 한다.

 과연 화이트 해킹이 불법일까?
 정확한 법적 개념으로 이야기하자면, 화이트 해킹 자체는 불법이 아니다. 화이트 해킹을 정부나 기업이 받아 들여서 진행하는 것이냐 아니야에 의해서 불법이냐 아니냐가 결정될 뿐이다. (시스템을 소유한 곳에서 문제를 찾을 생각이 없다고 하는데, 그것에 대해서 문제를 찾겠다고 시스템을 분석하는 작업이 진행되서 만약에 위해-문제를 건드려서 작동 불능 또는 데이터 손실-이 발생했다면 위법으로 간주되기 때문이다.)

 화이트 해킹을 받아 들이지 않는 시스템을 Secure(안전)하다고 평가할 수 있을까?
 솔직히 이 질문에 대해서는 단순 명료하게 이야기할 수 있다. 절대로 안전하지 않기
때문에 받아 들이지 않는다고 말할 수 있으며, 문제가 표면화되기 전까지 안전하게
만들 생각이 없다라고 스스로 자인하는 것과 같다는 것이다.

 화이트 해킹의 기본 기술 중에 리버스 엔지니어링이 있다. 이 리버스 엔지니어링의
가장 쉽게 노출되는 것이 바로 ActiveX 기술이다. 서버와 클라이언트가 통신하는
방법론 자체에 대한 기술을 클라이언트에서 알 수 있게 해 주기 때문이다.
 WWW의 기술적인 내용을 보면 클라이언트는 서버가 어떻게 동작하는 지 알 수 없도록
하는 부분이 중요한 요소를 차지하고 있다.(솔직히 클라이언트 단에서 데이터 처리가
많을 수록 WWW-웹의 보안을 해친다는 것도 알고 있을 것이다. 과도한 JavaScript도
이에 해당한다고 보고 있습니다.)

 재화와 관련해서 가장 많은 정보가 왔다 갔다 하는 것이 바로 금융기관이라고 할 수
있다. 근데 대한민국 금융 기관의 보안 사고는 생각보다 많으며, 그 피해도 매우 크다.
왜 그럴까? 그 원인을 파악하기 위해서 금융기관이나 이에 대한 감독 기관인 금감원에
화이트 해킹 이야기를 꺼내는 순간 매우 불쾌하게 생각할 것이다. (자신들이 추구하는 보안-안전이 아님-이 그렇게 허술해 보이냐고 말이다.) 그럼, 그렇게 자신 있으면 화이트 해킹을
허락해 줄 수 있냐고 물어 보면, 한번도 허락을 한 적이 없다는 사실이 논리적 반증이 된다는것을 그들도 알고 있을 것이다.

 화이트 해킹을 통해서 안전한 시스템을 만들 수 있는 기술을 확보해 나갈 수 있다는
사실을 언제나 인정할 지에 대해서는 알 수가 없다. 대한민국에서 화이트 해킹에 대한
인식과 제도적으로 보장되는 상황이 되어야 한다는 것은 동의하지만, 불법도 아닌데
불법으로 몰아가는 정부나 기관, 기업들의 태도는 고쳐져야 한다는 생각을 전하고
싶을 뿐이다.

2013년 1월 1일 화요일

다수의 취약 서버를 경유한 개인 계정 해킹


 대한민국에서 몇몇 개인정보 유출 사고가 있었는데, 이 중에는 사용자 아이디와 암호까지 고스란히 노출이 된 경우가 있었습니다.
 유출이 일어난 해당 서비스에서는 사용자 암호는 암호화가 되어 있어서 안전하다고 이야기하지만, 보안 쪽에서 본다면, 단방향 암호화를 사용하지 않았다면 해당 암호는 안전하다고 볼 수 없다는 게 통상적입니다. 거기다가, 다른 서비스에서 유출된 정보와 연계해서 분석하면 사용자 암호를 유추할 수 있는 경우는 매우 많습니다. 이렇게 해서 확보한 개인 정보를 통해서 다양한 해킹이 시도되고 있습니다.
 국내에서 이러한 해킹을 직접적으로 시도할 경우에 해당 계정의 사용자가 이를 탐지해서 경찰에 신고할 경우에 추적 당하게 되어 적발당할 수 있다는 사실을 해커들도 잘 알고 있습니다. 그래서, 여러 단계를 거쳐서 해킹을 해오고 있는데, 최근에 발견한 유형에 대해서 설명을 하고자 합니다.


0.서버 경유 해킹 방법
 일반적으로 서버를 경유해서 하는 해킹은 아래와 같은 방법을 선호해 왔었다



 그러나 포털이나 인터넷제공회사에서 중국에서 접근해 오는 해킹 시도를 차단하면서,
이를 우회하는 방법으로 취약서버를 이용하는 방향 쪽으로 전환을 했다.

 취약점은 여러가지가 있으나, 접근 권한 또는 백도어 등을 활용하는 경우가 많았습니다.



 취약 서버로 활용되는 서버를 지금까지 취합해 보면, 주로 IDC에 있는 서버가
1차적으로 손 꼽히고, 다음으로 개인 사무실에 설치된 서버, 다음으로 관리가
부실하다고 판단되는 사이트의 서버라고 할 수 있을 것입니다.
 직접 해당 방법으로 개인 메일 계정에 대한 해킹 시도를 경험했었고, 취약서버
리스트까지 정리해서 경찰 신고까지 접수하였으나, 취약 서버에 접속한
최종 위치가 중국이었기 때문에 그 이상은 추적하지 못한다 하여 조사가 종료가
된 상태입니다. (추적이 아예 불가능하냐고 물으신다면? 뒤에 조금 첨부되어
있습니다.)


1.스팸 메일 발송 및 불법 광고 게시물
 가장 많이 이루어지는 행위가 바로 스팸메일 발송입니다. 포털 대부분 '화이트 리스트'를
스팸 메일 분류에 활용하고 있기 때문에 스팸 메일 서버를 별도로 만들어서 메일을 보내는
것은 의미가 없는 상황입니다.
 또한 포털에 구축되어 있는 많은 커뮤니티들에 불법 게시물을 올려서 광고하는 것은
꽤 효과가 있는 영업 방식입니다.
 이를 위해서 개인정보를 이용해서 이러한 기능을 수행하는 것을 목적으로 해킹하는 경우가
가장 많은 경우였습니다.


2. 개인 정보 - 사생활 추적
 다음으로 가장 문제가 되는 것은 바로 사생활 추적입니다. 많은 사이버 흥신소가
특정 상대방의 메일이나 주소록 정보를 확보하기 위해서 이러한 시도를 하는 것으로
확인이 되었습니다.
 본인의 동의를 거치지 않거나, 수사기관의 도움 없이 개인의 메일 계정에서 메일이나
주소록을 가져오는 행위는 매우 큰 불법 행위입니다. 이를 사용하는 행위도 당연히
불법적인 것에 해당을 하지요.
 사이버 흥신소는 자신들이 어떤 경로를 통해서 이러한 개인 정보-사생활을 확보했는지
당연히 밝히지 않지만 현재 대한민국 몇몇 포털과 서비스에서 유출된 정보라면
이메일의 암호를 파악하거나 유추해서 사용하는 것은 어려운 일이 아닙니다.
 개인정보를 파악하지 않은 것처럼 보이기 위해서 스팸메일을 발송하거나 불법
게시물을 올리는 행위를 함께 수행하는 듯 합니다.


 취합을 위해서 기본으로 사용해 온 것이 바로 '주민등록번호' 입니다. 주민등록번호를
통해서 자주 사용하는 아이디를 알게 되면, 몇몇 사이트는 주민등록번호 만으로 암호를
알려 주기 때문에 암호를 유사하게 사용하는 경향을 이용해서 다른 사이트도 확인을
하게 됩니다.
 기존에 유출된 개인정보를 취합해서 개인정보 조사 자료를 만들어서 활용합니다.
개인정보 조사를 위한 자료를 만들어서 판매하는 브로고커도 있으며, 해킹하는 쪽
입장에서도 이러한 자료가 있는 것과 없는 것의 차이는 매우 큽니다.


3. 이러한 해킹 시도를 법적으로 막을 수는 없나?
  완벽하게 막는 것은 불가능합니다. 하지만, 이러한 방법으로 해킹하는 사람을
찾아내서 법적으로 처벌함으로써 막아 나가는 것은 가능합니다.
 해당 타이밍에 취약서버에 접근한 중국서버에 접근하는 한국 내 IP 정보를 통해서
추적을 해 나가는 일입니다. 이러한 일은 현재 대한민국의 ISP가 크게는 3개 업체의
국제망을 통해서 연결되고 있기 때문입니다.
 취약 서버의 숫자를 줄여 나가는 것도 중요하지만, 서버 관리나 보안 컨설팅과
관련해서 업체들이 제대로 된 비용 지불을 할 용의가 없기 때문에 대부분의
웹 에이전시나 SI 회사에 이러한 역할을 기대하는 것은 무리가 있습니다.


 꽤 오래된 일인데 이제서야 글을 올리네요.