Skip to content
May 26, 2012

Protected: New blog article

This post is password protected. To view it please enter your password below:

April 30, 2012

시스캔 이후: Q&A

이번 시스캔 2012 (http://syscan.org) 에서 Ryan과 함께 “Owning entire organisations with regional software they’ve never heard of”란 주제로 발표를 했습니다. 시스캔 발표 이후, 몇몇 한국분들이 질문을 주셨는데 이를 정리하여 블로그 글로 간략히 작성해보았습니다.

 

1. 시스캔에서 발표한 한글 취약점이 제로데이인가요?

네, 이번 연구를 통해서 직접 발견한 제로데이입니다. 한글 최신버전에서 작동하는 것을 확인하였습니다.

 

2. 몇개의 한글 취약점을 발견했나요?

발표에서 언급한 것처럼, 퍼징을 통해서 발견하였고 최소 5개 이상의 크래쉬가 exploitable한 것을 확인하였습니다.

 

3. 한글 제로데이 데모를 하셨다고 하는데, 정확히 어떤 내용인가요?

본 한글 취약점은 memory corruption을 통해 발생하는 취약점으로, 해커는 자신이 원하는 쉘코드를 실행할 수 있는 상황입니다. 데모에서는 저희가 조작한 한글 파일을 실행하는 방식을 선택 하였고, 성공할 경우 특정 이미지 파일을 열어서 화면에 보이도록 했습니다.

해당 이미지에는 특별한 의미는 없고 저희가 친하게 지내는 해커들인 Stefan Esser와 Grugq을 발표현장에서 놀리기 위해 재미로 제작된 합성 이미지였습니다.

 

4. 이번 발표에서 무엇을 말하고 싶었던 건가요?

이번 발표를 통해 저희가 언급하고 싶었던 부분은 “한국을 어떻게 해킹하느냐“가 아니라 “보안을 위해서 한국의 Security Bar를 높여야 한다“였습니다. 우리나라의 경우 MS Word같은 외산 프로그램보다 HWP 등의 국산 프로그램이 보안적인 측면에서 더 파급력이 큽니다. 모든 관공서에서 사용하고 있기 때문이죠.

안타깝게도 HWP는 한국에서만 유명하기 때문에 어떻게 보면 그 안전성이 세계적인 해커들에 의해서 검증된 상태가 아니라고 볼 수 있습니다. 문제는, HWP가 한국에만 고립된 환경이라 하더라도, 이것을 연구하여 악용하는 사람은 분명히 있기 마련입니다.

즉, HWP같은 국산 프로그램도 공격 대상에 포함된다는 것은 확실하다고 볼 수 있는 것이죠. 예를 들어 한글에서 제로데이가 나올 경우, 다른 나라 정부에서 이를 악용하여 한국의 주요 인물들을 공격하는데 사용할 수도 있습니다.

그렇기 때문에 우리가 먼저 나서서, 국산 프로그램들의 보안성을 높일 필요가 있다는 것입니다. 이번 발표를 통해 사람들에게 경각심을 주고 싶었습니다.

 

5. 이번 발표에서 굳이 한글을 택한 이유는 무엇인가요?

특별한 이유는 없으며, 단지 한글 HWP가 한국에서 가장 유명한 프로그램이고 제일 높은 점유율을 가진 워드 프로세서이기 때문입니다.

 

6. 발견하신 취약점들은 공개하실 계획인가요?

아직은 공개할 계획은 없습니다.

 

7. 벤더에 리포트를 할 예정이신가요?

벤더에 리포트할 예정은 아직 없습니다.

 

8. 발표하신 퍼징 기술에 대해서 간략히 소개하신다면?

퍼징의 기술은 굉장히 다양한 방식으로 연구되고 있습니다. 저 역시 저만의 방식의 퍼징을 연구하고 사용 중인데, 가장 큰 특징 2가지를 언급하면 다음과 같습니다.

첫째, 소스 코드가 없는 환경에서 바이너리를 직접 변조하여 플로우를 기록하고 퍼징을 수행할 수 있도록 합니다. 둘째, 퍼징을 수행하며 기록한 플로우를 레코딩하고, 이전/이후의 플로우를 비교하여 어떤 부분의 데이터가 프로그램 실행에 영향을 주었는지 식별한 후, 데이터를 어떻게 바꿔야 다른 basic block 혹은 function에 접근할 수 있는지 알아냅니다.

기존의 Smart 퍼징이 정적 분석이나 라이브 분석을 통해 얻은 데이터를 이용하여 코드 커버리지를 넓히려 했던 것에 비하여 제가 이용한 퍼징은 실행 후 취득한 데이터를 이용한다는 점에서 차이가 있습니다. 코드 커버리지를 넓히기 위해서는 intermediate language, taint analysis, symbolic execution 등의 기술이 필요한데, 탁월한 기술들이지만 단점은 속도가 느리다는 것입니다.

이를 보완하기 위해 어떤 연구에서는 분석해야 할 부분을 선택적으로 택하기도 하는데, 제가 이용한 방법이 갖는 의미는 분석해야 할 대상인 데이터와 플로우를 뒤에서부터 접근하기 때문에 비교적 정확하고 최적화할 수 있다는 점입니다. 가령, 끝에서부터 비교하여 접근을 하기 때문에 비교 대상의 범위를 지정하기가 좋은 방법론이라는 이야기입니다.

또한 앞서 언급했듯이 디버거 등의 도움을 받지 않고 바이너리 후킹을 통해 퍼징을 하기 때문에 Native speed로 작동하는 것이 장점입니다. BitBlaze나 S2E 등의 기존 아카데믹 연구들이 본 연구를 하는데 계기를 주었습니다. 이러한 연구들은 훌륭한 기술들이 사용되었음에도 불구하고 속도 등의 문제 때문에 제 연구에 사용하기에는 어려웠고, 따라서 일부 기술이나 아이디어를 차용하여 새로운 아이디어를 구상한 후 구현해보았습니다.

 

9. 시스캔 컨퍼런스는 재미있었나요?

제가 가본 컨퍼런스 중에서 가장 훌륭한 컨퍼런스중에 하나였습니다. 개인적으로는 2번째 방문인데, 세계적으로도 그렇지만 아시아에서는 독보적으로 훌륭한 발표들이 포진되어 있습니다. 규모는 작지만 세계적으로 모이는 컨퍼런스이기 때문에 아시아 컨퍼런스라고 보기 힘들 정도입니다.

발표뿐만 아니라 참관객들, 특히 스피커들에 대한 대우가 무척 좋은 컨퍼런스입니다. 주최측은 스피커들에게 좋은 경험을 주기 위해 노력하고 정말 케어를 잘해줍니다. 저의 경우 음주를 좋아하기 때문에 더욱 마음에 드는 컨퍼런스였는데, 24시간, 3일 내내 술이 항상 준비되어 있습니다.

사실 컨퍼런스에서 발표되는 내용들은 그냥 집에서 슬라이드만 봐도 어느 정도 이해가 된다고 봅니다. 이것보다 중요한 것은 발표장에서 다른 해커들과 네트워킹을 하며 이야기를 하고 정보를 얻는 것인데 이게 컨퍼런스 참관의 진정한 장점이 아닌가 생각합니다.

 

10. 다음 발표는 언제인가요?

5월 중순경 일본의 WAIGAYA meeting에서 “APT 공격, 그리고 왜 우리는 자국의 Security bar를 높여야 하는가?”에 대해서 발표할 예정이며, 7월엔 한국에서 열리는 보안 컨퍼런스인 코드엔진에서 퍼징 기술에 대해서 발표할 계획입니다.

 

March 13, 2012

퍼징: 해커 입장에서 흥미로운 함수란?

취약점 발견을 위해서 Fuzzing을 할 때, 어떤 함수가 해커에게 좋은 함수인지 판별해내는 것은 중요합니다. 함수 별로 처리를 해줘야 하는 경우가 많기 때문입니다. 예를 들어, 특정 함수의 인자나 스택 정보 등을 추출해내고 싶을 때가 그러한 경우 중에 하나입니다.

해커 입장에서 유용한 함수는, 해커가 해당 함수에 관여할 수 있는가 없는가로 구분할 수 있습니다. 여기서 말하는 관여란, 크게 2가지를 의미합니다.

  – 베이직 블락 플로우의 변화
  – 메모리 및 레지스터의 값 변조

메모리 코럽션류의 버그 헌팅 과정 중에서는, 위 조건을 만족하지 않는 함수는 해커에게 관심이 없는 함수라고 볼 수 있습니다. (레이스 컨디션이나 외부 리소스와 관련된 류의 버그는 제외합니다.)

위 2조건을 합쳐서 어떤 함수들이 해커의 관심을 끄는지, 기본적인 내용들을 알아보겠습니다.

  1. 함수에 데이터를 넘겨줄 수 있는가
   – argument 등으로 데이터를 넘기는 것이 가능한가
   – 특정 메모리 (user provided) 주소를 참고하는가

  2-1. 함수 내부에서 취약한 함수를 호출하고 있는가
   – sprintf, strcpy, strcat, memcpy 등

  2-2. loop 문을 포함하고 있는가 (루프 디텍션)
   – 반복 값이 동적인가
   – 정적의 경우 관심 제외: 상수, 정적, 고정 사이즈 (예: mov ecx, 0×8)
   – source 값이 동적인가

  2-3. integer overflow 가능성이 있는가
   – 예: ja/jb vs jg/jl
   – 비교 대상이 user provided 값인가

  2-4. 기타
   – 메모리 카피류의 인스트럭션을 포함하는가 (예: rep 등)

  3. 함수 진입이 가능한가? (Reachability)

위 조건들을 자동으로 판별해내고 데이터를 얻어낼 수 있다면 퍼징에 매우 효과적으로 사용할 수 있습니다.

루프 디텍션 등의 작업은 정적 분석으로도 비교적 쉽게 할 수 있고, 함수 인자에 대한 식별도 런타임의 힘을 빌리면 어렵지 않게 할 수 있습니다. 위 작업에서 힘든 점은 Reachability 체크와 user provided 데이터인지 아닌지 구분하는 것입니다.

Reachability 체크를 위한 가장 쉬운 방법은 모든 함수를 후킹하거나 브레이크 포인트를 건 후 플로우를 레코딩하는 것입니다. 레코딩 된 정보는 데이터베이스화하여 사용할 수 있습니다.

그러나 조건이 맞아야만 플로우가 분기되는 경우도 있기 때문에 보다 정확하게 판별하기 위해서는 taint analysis와 symbolic execution 등을 활용해야 합니다. User conrtrollable 데이터인지 아닌지 마킹하는 것은 중요한 일이지만 이를 위해서는 “개발 비용 및 속도”라는 트레이드 오프를 감수해야 한다는 얘기죠.

위에서 언급한 조건들은 기본적인 내용들이고 간단해 보이지만 완벽하게 구현하기는 무척 어렵습니다. 어디까지 구현을 하고 버그 헌팅을 할 것인지 결정하는 것은 버그 헌터의 몫입니다.

여담이지만, 해커들 사이에서도 dummy fuzzing 파와 그렇지 않은 파로 나뉘는데 dummy fuzzing을 하는 해커들이 꼭 기술적으로 떨어지는 것은 아닙니다.

이 친구들은 버그를 찾는 것 자체가 목적이지, 학문이나 기술적인 진보가 목적이 아니기 때문에 자신의 상황이나 비지니스에 맞는 방향을 선택합니다.

tainting 등을 활용하여 advanced fuzzing을 하다가 결국엔 몇만 달러의 자금을 투자해 하드웨어를 산 후 dummy fuzzing을 하는 친구들도 있죠. 버그를 발견해서 번 금액은 다시 하드웨어에 재투자해 scalable한 fuzzing을 주도하고, 또 대상 소프트웨어에 따라 빠르게 fuzzing을 하는 것이 이 친구들의 전략입니다.

 
[레퍼런스]

1. Halvar Flake: “More fun with Graphs” – http://www.blackhat.com/presentations/bh-federal-03/bh-fed-03-halvar.pdf
2. Bitblaze – http://bitblaze.cs.berkeley.edu/

March 10, 2012

개인정보보호법 해설 문제점 제기: 주민등록번호 암호화 이슈

사이버범죄가 기승을 부림에 따라 개인정보보호법의 중요성도 강조되고 있습니다. 컴퓨터 보안은 복잡하기 때문에 관련 법 체계가 아직은 완전히 정립되지 않았다고 볼 수 있습니다. 해당 분야는 전문가들도 이해하기 어려운 부분이 있기 때문에, 관련 법 체계가 성숙해지기 위해서는 시간이 필요할 것으로 보입니다.

기술적인 분야는 자세한 내용들을 법률에 그대로 담기가 어려운데 이럴 경우, 침해사고 재판 시 판결 기준이 애매해질 수도 있다는 문제점이 있습니다. 그래서 전문가들의 법률 해석이 중요합니다. 법률 자체만 보면 애매한 부분들이 많이 있기 때문에 관련 부분에 대해서 좀 더 명확히 하기 위해, 전문가들의 의견을 참고하는 것이죠.

전문가들은 기존의 판례에서도 해석을 도출해내지만, 법률을 기술적인 면으로 재해석하여 의견을 내기도 합니다. 그런데 가끔은 전문가들의 해석에도 이견이 있을 수 있습니다. 개인정보보호법에서의 쟁점 중에 하나인 주민등록번호에 관한 이슈를 예로 들 수 있습니다.

주민등록번호는 말 그대로 개인을 식별할 수 있는 정보이기 때문에 개인정보로 취급되어 암호화되어야만 합니다. 그러나, 아시다시피 주민등록번호의 사용 빈도는 무척 높습니다. 예를 들어, 주민등록번호에는 생년월일이 포함되어 있는데 사용자의 생일 이벤트 등에 사용하기 위해서 활용되기도 하죠.

이렇게 많이 사용되다보니, 주민등록번호 13자리 전체를 암호화할 경우 시스템의 퍼포먼스를 낮추는 요인이 될 수도 있습니다.

퍼포먼스 문제는 언제나 기업들이 난감해 하는 요소 중에 하나입니다. 마침 이에 관해서 보안 전문 매체 데일리시큐와 김앤장의 이강신 전문위원이 나눈 인터뷰 기사가 있습니다. 그중에서 주민등록번호 이슈에 관한 전문만 추출해보았습니다.

 

인터뷰 기사: http://dailysecu.com/news_view.php?article_id=1801

Q. 암호화 문제를 난감해 하는 기업들이 많은데 어떻게 해결하는 것이 좋을까?

A. 암호화는 개인정보 유출 등 침해사고가 발생되더라도 최후의 안전수단으로 하는 조치사항이다. 그러나 암호화는 성능을 저하시키는 문제점도 있기 때문에 개인정보처리자 입장에서는 비용 등의 문제로 고민하고 있는 것이 사실이다. 이 때문에 부분암호화를 인정하고 있다. 가령, 주민등록번호의 경우 총13자리이며, 이는 64비트 블록암호알고리즘을 사용할 경우 2개 블록이 된다. 암호화의 경우 블록 단위로 한다는 점을 고려할 때 8자리까지 1개 블록으로 처리할 수 있으며, 9자리 이상일 경우는 2개 블록을 처리하므로 성능이 1/2로 떨어지게 된다.

따라서 생년월일을 제외할 경우 7자리만 암호화하면 되며, 속도도 2배로 개선된다. 생년월일만 가지고는 개인정보라고 할 수 없기 때문에 개인정보의 속성도 없어진다고 볼 수 있으므로 문제가 없다고 판단하고 있다. 현재 주민등록번호는 뒷부분 6자리를, 신용카드번호는 뒷부분 10자리를 암호화 영역으로 권고하고 있다. 즉 1블록 단위로 부분암호화를 한다면 퍼포먼스 문제도 해결되고 법 준수도 지킬 수 있다는 말이다.

 

이강신 전문위원께서는 주민등록번호의 앞자리만으로는 개인을 식별해낼 수가 없기 때문에 뒷자리만 암호화를 해도 문제가 없다고 언급하셨습니다. 생년월일만으로는 개인을 식별할 수 없기 때문에 개인정보라는 뜻 자체만을 놓고 보면 이강신 전문위원의 의견이 맞습니다.

하지만 개인정보보호라는 것은 어디까지나 암호화가 풀리지 않고 유지될 수 있다는 가정하에 성립되는 것입니다.

물론 개인정보의 성격상, 완벽하게 암호화를 적용하는 것은 거의 불가능합니다. 그러나 상식적으로 생각했을 때, 적용된 암호화가 쉽게 풀릴 수 있다면 개인정보를 위한 암호화라고 볼 수 없을 것입니다. 위 인터뷰에서 이강신 전문위원은 64비트 블록암호알고리즘을 언급하셨는데, 일반적인 64비트암호알고리즘으로는 6자리 숫자를 안전하게 암호화할 수 없습니다.

 

8 4 1 2 1 2 - 1 0 0 0 0 0 0

 

6자리의 암호화를 크랙하기 위해서는 최대 1백만번의 brute-force가 필요한데(주민등록번호 하위 7자리를 암호화한다면 2백만번) 현대의 컴퓨팅 파워를 이용하면, 일반 가정용 컴퓨터로도 단시간내에 해독할 수 있기 때문입니다. (참고로, 2000년 이후에 태어난 남자의 주민등록번호는 첫자리가 3, 여자는 4가 주어집니다.)

또한, 우리나라 주민등록번호에는 공식이 있습니다. 이 공식을 pre-computing하여 리스팅한 후 해독을 시도한다면 1백만번의 brute-force 케이스를 획기적으로 줄일 수 있습니다.

다시 한번 정리하면, 논리적으로 봤을 때 하위 6자리만 암호화하는 것은 개인정보를 위한 암호화라고 보기엔 충분하지 않다는 것입니다. 64비트 이상의 암호화를 적용한다고 해도, 일반 개인용 PC로도 단시간내에 해독될 수 있습니다.

위 인터뷰 외에도, 주민등록번호의 하위 자릿수만 암호화를 해도 된다는 해설은 행전안전부의 “개인정보보호법령 및 지침.고시 해설서“에서도 언급되어 있습니다.

 

[행안부 개인정보보호법령 해설서]

 

행안부의 개인정보보보호법령 해설은 현재 중요한 역할을 하고 있다고 볼 수 있는데, 그 이유는 개인정보 관련 재판이 아직까지 많지 않기 때문입니다. 판례가 적어서 참고할 수 있는 부분이 많지 않고, 자연스럽게 행안부의 해설이 판결에 영향을 줄 수도 있습니다.

본 블로그 글에서는 기업이 개인정보 암호화를 완벽하게 해야 한다는 것이 아니라 암호화된 개인정보를 누구나 쉽게 풀 수 있게 해서는 안된다고 말하고 있습니다. 다시 언급하지만, 컴퓨터 보안은 어렵습니다. 따라서 개인정보보호법령이나 해설에도 보완되고 발전되어야 할 부분들이 있습니다.

향후, 해커의 눈으로 보는 개인정보보호법령이나 해설에 대한 시리즈를 준비할 예정이니 기대해주시기 바랍니다.

 

본 글은 공격자가 암호화된 데이터베이스를 해독하기 위해서 필요한 복호화 키를 획득할 수 없는 상태라고 전제한 것입니다. 그러나 만약 해커가 복호화에 필요한 키를 탈취한다면 암호화는 무용지물이 되기 때문에 데이터베이스의 권한과 기타 웹 자원의 권한을 명확히 분리하는 작업이 필요합니다.

또한, 이미 국민 절반 이상의 주민등록번호가 유출된 상황이기 때문에, 더 이상의 보호가 어떤 의미가 있겠냐는 의견도 있을 수 있습니다. 하지만 주민등록번호 이외에도 보호되어야 할 개인정보는 많이 있기 때문에 어떤 방식으로 보호를 해야할 지 논의하는 것은 앞으로도 필요할 것으로 보입니다.

 

리뷰를 해주신 분들입니다. 감사합니다!

민병호 연구원
        Twitter – http://twitter.com/tais9
        Facebook – http://www.facebook.com/tais9

구태언 변호사
        Twitter – https://twitter.com/gootiee
        Facebook – http://www.facebook.com/Gootiee

March 8, 2012

개인정보 사고 판례: 침해사고 재판 시 해킹에 사용된 기술의 난이도가 미치는 영향

개인정보 판례 관련 세번째 글입니다. 이번에는 침해사고 발생 시에 사용된 해킹 기술이 재판 결과에 어떤 영향을 줄 수 있는지 알아보겠습니다. 본 케이스 역시 실제 재판 결과를 토대로 작성한 글입니다.

 

[다른 글 보기: 침해사고 대응 노력에 따른 배상 규모 판결 사례]

 

[다른 글 보기: 침해사고 방지 노력에 따른 책임 유무 판결 사례]

 

LG전자는 2006년 9월에 하반기 신입사원 공고를 했는데 다른 곳과 마찬가지로 인터넷을 통해 지원자를 접수받았습니다. 안타깝게도 접수 처리를 하였던 웹 페이지 서비스에 취약점이 존재하였는데, 이를 악용할 경우 LG전자 지원자들의 지원서를 임의로 볼 수 있었습니다. 문제는 불합격 통지를 받은 지원자 중에 한명이, 웹 사이트 상에서 취약점을 발견하였고 이 문제점을 인터넷에 공개하였습니다.
 

[2011년 1억건의 개인 정보가 해킹 당한 소니의 경영진 사과]

 
취약점 정보가 공개된 후, 인터넷의 불특정 다수가 해당 자료에 대해서 열람을 시도하였고, 결과적으로 총 3천여명의 입사지원서가 열람 당하였습니다. 재판 결과, 위자료는 30만원으로 책정되었고, 이 액수는 기존의 다른 침해사고 판례들에 비교한다면 높은 액수입니다. 사유는 다음과 같습니다.

 

  1. LG전자의 보안조치는 당시의 기술수준에 비추어 충분하다고 볼 수 없는 점
  2. LG전자 시스템의 모니터링이 아니라 다른 인터넷 게시판의 모니터링을 통하여 이 사건 사고를 발견하였고, 그로부터 1시간 8분이 경과한 후 해당 웹 서버가 차단되기까지 입사지원자들의 정보를 열람할 수 있었던 점
  3. 사고 발생 하루 후에 입사지원사이트에 사고발생사실을 게시하였을 뿐 입사지원자들 에게 이메일 등을 통해 안내한 바 없고, 소송에 이르기 전까지 입사지원자들에게 개 인정보 유출 여부와 유출된 정보가 무엇인지 확인하여 준 바 없는 점
  4. 개인사, 가족관계, 가치관 등 사적인 영역의 민감한 정보까지 침범당하였던 점
  5. 위 게시글이 3,056회의 조회수를 기록하였고, 입사지원자들의 등록정보를 열람한 IP주소가 671개이며, 3천여명의 입사지원서가 열람당한 점

 

위 사유에서 기술적인 면으로 주목할만한 부분은 “LG전자의 보안조치는 당시의 기술수준에 비추어 충분하다고 볼 수 없는 점“입니다. 재판부는 무엇 때문에 그렇게 생각했고, 또 이러한 판례가 보안담당자들의 정책에 영향을 주는 부분은 무엇인지 알아보겠습니다.

재판 과정에서 재밌는 일이 있었습니다. “LG전자 해킹에 사용된 해킹 기법이, 다른 대기업의 입사 사이트에도 적용되는지 알아보자.“라는 의견이 제시되었던 것이죠.

LG전자 해킹에 어떤 기법이 사용되었는지 정확히 알 수는 없지만, 웹 해킹 취약점이었고 또, 다른 제 3자들도 쉽게 열람이 가능했다는 점에 의하면 “LFI“, “SQL Injection” 혹은 “단순 인자 조작” 정도였을 것입니다.

아마도 LG전자 해킹에 사용되었던 웹 요청 중의 일부를 copy & paste를 하여, 다른 대기업의 입사 사이트에도 시도를 해보았을 것으로 생각됩니다. 다른 사이트에서는 문제가 없었다고 합니다.

이것이 판결에 영향을 준 것이죠. 쉽게 말하면, “대기업 사이트라면 이 정도 난이도의 취약점은 발견되어선 안된다. 그 증거로 이 취약점은 LG전자에만 존재하지 않느냐“라고 생각될 수도 있다는 것이죠.

사실 해커 관점에서 봤을 때, 이러한 방식의 테스트가 공정하다고 생각하진 않습니다. 웹 해킹의 특성상 똑같은 원리의 취약점이라도 다른 모듈에서 발생하거나 혹은 문자열 몇개만 바꿔도 전혀 다른 결과가 나올 수 있기 때문입니다.

어쨌거나 이것이 보안 정책 담당자, 특히 엔지니어들에게 시사하는 점은, “소프트웨어 취약점이 재판 결과에 영향을 줄 수도 있다.“라는 것입니다. 즉, 해킹 당한 취약점의 난이도에 따라 과중 처벌을 받을 수도 있다는 얘기입니다.
 

 
이런 시나리오도 있을 수 있습니다. S라는 기업에서 해킹 침해사고가 발생하였습니다. 개인정보 유출로 인해 피해를 입은 사람들이 고소를 하여 재판이 진행됩니다. 제가 만약 피해자측의 변호사라면 S 기업의 웹 사이트와 제품들에 대해서 취약점 검증을 시도할 겁니다.

검증을 하다가 쉬운 난이도의 취약점을 찾는다면 재판에 있어서 좋은 무기가 될 수도 있습니다. 왜냐하면 이런 증거들은 S 기업이 평소에 얼마나 많이 보안에 관심을 기울이는 기준이 될 수도 있기 때문입니다.

얼핏 보기에는 침해사고 자체와는 관련이 없어 보이는 부분이 판결에 중요한 영향을 준다는 점에서 주목해야 합니다. 이러한 판결을 참고하는 것은 기업 입장에서는 무척 중요한데, 그 이유는 정보보호 관련 재판들은 아직까지 그 사례가 많이 없었고 따라서 기존의 판례들이 앞으로의 재판들에도 영향을 미칠 것으로 보기 때문입니다.

March 1, 2012

보조 의료 머신의 취약점으로 인한 위험성 경고

현재 미국에선 2012 RSA Conference가 성황리에 열리고 있습니다. 여러 흥미로운 발표들이 진행되고 있는데, 그중에 하나를 소개드리겠습니다.

당뇨병 환자들은 주기적으로 인슐린을 공급받아야 합니다. 기술의 발전으로 인해 요즘엔 보조 의료 머신을 이용하여 주입하기도 하는데 잘 알려진 의료 머신은 인슐린 펌프입니다. 대표적인 의료 기구 제작사인 Medtronic에서 인슐린 펌프에 관해서 다음과 같이 설명하였습니다.
 

인슐린 펌프

인슐린 펌프는 작은 휴대용 장치로서, 당뇨병 환자에게 인슐린을 지속적으로 공급해줍니다. 인슐린 펌프는 벨트나 옷 안주머니와 같은 여러 곳에 넣어둘 수 있습니다. 펌프는 피부 안쪽에 심어둔 작은 관을 통해 인슐린을 주입해줍니다. 성인과 소아 환자를 대상으로 한 연구에서는 인슐린 펌프 요법이 인슐린 주사를 하루에 여러 번 투여하는 전통적인 처방보다 혈당 조절에 더 뛰어난 것으로 증명되었습니다.

당연한 얘기지만 특정 조건에 맞춰서 환자에게 자동으로 인슐린을 공급해야 하기 때문에 의료 머신은 프로그래밍이 가능합니다. 그냥 일반적인 소프트웨어라고 같다고 보시면 됩니다.

 

이번 RSA 컨퍼런스에서는 인슐린 펌프의 취약점과 이것이 어떻게 악용될 수 있는지에 대해서 경고하는 발표가 있었습니다. 보안 업체 McAfee에 다니는 해커 Barnaby Jack에 의해 진행된 연구 입니다. 다들 아시다시피 Barnaby Jack은 아주 유명한 해커죠. 대표적인 연구는 2010년 블랙햇에서 발표된 ATM cash machine 해킹입니다.

다음은 이번에 발표된 인슐린 펌프 해킹과 관련 기사입니다.

http://go.bloomberg.com/tech-blog/2012-02-29-hacker-shows-off-lethal-attack-by-controlling-wireless-medical-device/

핵심은, 만약 해커가 인슐린 펌프를 사용하는 환자의 근처에 접근할 수 있다면 발견한 취약점을 이용하여 인슐린의 양을 마음대로 공급할 수 있다는 얘기입니다. 인슐린 펌프는 Wireless로 연결되어 있습니다. 즉, 꼭 물리적인 방식이 아니더라도 접근할 수 있는 가능성이 있다는 것이죠.

 

Barnaby Jack (Photograph: David Paul Morris/Bloomberg)

 

당연한 이야기지만, 인슐린 공급이 적절하게 이루어지지 않을 경우 당뇨병 환자에게는 치명적인 문제가 됩니다. 생명과 직결될 수도 있는 문제이기 때문에 “정보 유출” 등의 기존 소프트웨어 보안 이슈랑은 다른 관점으로 접근해야 합니다.

Barnaby Jack은 기술적으로 자세한 내용을 언급하진 않았지만 산업계에 강한 경고를 남기는데 성공하였습니다. 사실, 인슐린 펌프와 관련된 보안 문제점은 이전부터 논의가 되어 왔었습니다. 학계에서도 다뤄져왔으며 데프콘 등에서도 발표된 적이 있었죠.

이번 Barnaby Jack의 연구는 인슐린 펌프를 악용할 수 있다는 점에서 기본적으로는 같습니다만, 연구를 보다 확장했다는 점에서 의의가 있습니다. 기존에는 장비가 Wireless라고 해도, 아주 근접한 위치에 있어야만 악용을 할 수 있었습니다.

Barnaby Jack은 Antenna를 활용하여 최대 300 feet (약 91미터) 거리에서도 인슐린 펌프 장비들에 접근할 수 있다는 것을 확인했다고 합니다. 이것이 실제 공격으로 연결된다고 하면 상상만 해도 끔찍하죠. 다행히 이 해킹을 구현하는 것이 아주 쉽지는 않기 때문에 누구나 할 수 있을 것 같지는 않다고 말했습니다.

이번에 진행된 연구를 통해 의료 장비에는 많은 보안 취약점이 존재한다는 것을 알게 되었다고 합니다. 여기서 한 가지 놀라운 점은, 해당 의료 기기 제작사인 Medtronic은 자사 제품의 보안을 위해서 여러 유수의 세계적인 보안 업체들을 이미 고용했었다는 점이죠. 그런데, 별로 성과가 없었다는 것입니다.

한마디로 말하면 Medtronic은 보안을 위해서 돈을 쓰려는 의지는 있었지만, 그 돈을 어떻게 써야 정말로 보안을 개선시킬 수 있었는지는 몰랐던 것이죠. 이 문제는 비단 Medtronic뿐만 아니라 전 세계적인 기업에서도 자주 일어나는 일입니다.

정보보호는 어려운 분야이기 때문에, 돈을 쓰는 방법도 연구를 해야 합니다. 전통적인 방식처럼 일방적으로 외주를 주는 방식으로는 해결될 수가 없는 문제죠.

February 27, 2012

SYSCAN SINGAPORE 2012 발표 리스트 정리

2012년 4월 26 ~ 27일에 SYSCAN Singapore 컨퍼런스가 개최됩니다. 이번 컨퍼런스에서 발표될 내용들을 정리해보았습니다. 본 정리 글은 보안 전문 뉴스 사이트인 Dailysecu의 후원으로 작성되었습니다.

Thomas Lim이 한국인들을 위한 특별 오퍼를 제시해줬습니다. 현재 Early bird로 등록하더라도 싱가폴 달러로 $1,000의 입장료를 내야 하지만 (walk-in은 $2,000 싱가폴 달러) 한국에서 오시는 분들을 위해 특별히 $600 싱가폴 달러로 티켓을 제공해주겠다고 합니다.

저렴한 가격에 등록할 수 있는 기회이므로, 관심있으신 분들은 저에게 이메일을 보내주시기 바랍니다. beistlab 골뱅이 gmail 닷 컴으로 보내시면 됩니다. 직장인들은 가능한 정상가로 구입하시고, 개인적으로 가보고 싶으신 분들은 할인된 가격으로 월드 클래스 해커들이 제공하는 발표를 직접 들어보시기 바랍니다.

- 컨퍼런스 홈페이지 바로가기: http://syscan.org/
- 컨퍼런스 등록 페이지: http://syscan.org/index.php/sg/registrations
- 발표 일정 페이지
    – Day 1 – http://syscan.org/index.php/sg/program/day/1
    – Day 2 – http://syscan.org/index.php/sg/program/day/2
- 트레이닝 코스 (24~25일): http://syscan.org/index.php/sg/training

다음은 발표 내용 소개입니다. 컨퍼런스 참가를 고려하고 계신 분은 참고하시기 바랍니다.

 


Heaps of Doom – Chris Valasek & Tarjei Mandt

Chris와 Tarjei의 합작 발표입니다. Chris Valasek은 윈도우 운영체제의 Heap memory management를 분석하는 해커로 유명합니다. Tarjei는 2011년 블랙햇 Pwnie award에서 user32k user-mode callback 취약점으로 “Pwnie for Best Privilege Escalation Bug“를 수상한 해커입니다. 유명한 해커 두명이 뭉쳐서 준비한 발표인데, 이번에는 Windows 8의 Heap memory management에 대해서 발표합니다.

Offensive 관점에서 봤을 때 기술적으로 어려운 분야는 Stack보다는 Heap입니다. Stack의 경우 보안 메커니즘을 적용하기가 간단한 반면에 Heap은 동적으로 생성되어 관리되는 객체이기 때문에 어렵습니다.

이 발표에서는 Windows 7에서 Windows 8 사이의 heap exploitation mitigation들에 대해서 자세히 살펴볼 예정입니다. Heap memory management를 분석하는 일은 쉽지 않지만 그만한 노력을 기울일 가치가 있습니다. 힙 Exploiting에 관심있는 분들께 추천할만한 발표입니다.

[추천 대상] – 힙 exploitation의 방어 기법 및 공격 기법에 관심있는 분

 


De Mysteriis Dom Jobsivs – Loukas

이 발표는 EFI(Extensible Firmware Interface)가 루트킷에 어떻게 활용될 수 있는지에 대해 다룹니다. EFI는 오래된 인터페이스인 바이오스를 대체하기 위해서 인텔이 개발한 규격이죠. EFI의 기본 백그라운드에 대한 발표를 시작하고 이것이 어떻게 루트킷에 활용될 수 있는지에 대해 다룹니다.

EFI는 운영체제가 부팅되기 전의 프로세스를 담당할 수 있습니다. 반대로 생각해보면, 이것은 security 관점에서는 진지하게 고려되야 할 부분입니다. 왜냐하면 EFI는 운영체제가 부팅이 되기 전부터 시스템을 제어할 수 있다는 의미이고, 따라서 운영체제에 악영향을 줄 수도 있기 때문입니다.

쉽게 말하면 루트킷을 만드는데 매우 유용하게 이용될 수 있습니다. 이 발표는 EFI를 이용하여 어떻게 루트킷을 구성할 수 있는지에 대해서 다루고, 특히 Mac OSX 운영체제에 포커스를 맞춰서 이야기를 할 예정입니다.

[추천 대상] – 루트킷 등의 악성 소프트웨어의 개발이나 탐지 방법이 궁금하신 분

 


Owning entire organisations with regional software they’ve never heard of – Ryan MacArthur & Beist

본 발표는 저와 iSight에서 근무 중인 Ryan MacArthur에 의해서 진행된 프로젝트이고 기본적으로는 tech talk이 아니며 보안 산업 분야에서 지적되어야 할 문제 중에 하나를 언급하는 발표입니다. 이 발표에서 말하고자 하는 것은, 제 3국에 속한 기업들이 전 세계 유명 보안 회사들의 제품을 구입하기 위해 수백만 달러 이상을 쏟아 부어도, 이것들은 결국 회사 보안에 별 도움이 안된다는 것입니다.

예를 들어, 해외의 어떤 안티 바이러스들은 pdf 포맷을 파싱하여 악성 코드를 잡아냅니다. 이것은 대부분의 안티 바이러스들이 단순히 파일 시그내쳐 매칭으로 악성 코드를 잡는 것과는 차원이 다른 좋은 접근 방식이죠. 왜냐하면 대부분의 안티 바이러스들은 공격 파일의 1바이트만 바꾸더라도 시그내처가 달라지서 탐지를 못하기 때문입니다. 반면에 파싱을 통한 안티 바이러스들은은 단순 시그내쳐로 구분하는게 아니라서 탐지 커버리지가 높죠.

그러나, 만약 이러한 제품들이 제 3국에서 쓰인다면 그다지 효과가 없습니다. 예를 들어, 한국의 경우 ‘한글’ 프로그램을 많이 사용하고 있는데, 해외 보안 솔루션들은 hwp 포맷을 신경쓰지 않습니다. 결국, 로컬라이제이션을 제대로 해야 솔루션들이 제 값어치를 할 수 있다고 주장하는 발표입니다.

여기까지는 기술을 잘 모르는 분들을 위한 제너럴한 토픽이지만, 물론 해커들을 위한 기술 섹션들도 있습니다. 가령, ‘한글’ 프로그램의 취약점 헌팅 과정이나, 발견한 취약점을 이용하여 어떻게 상용 제품을 우회하고 대상 PC를 장악할 수 있는지에 대한 설명도 있을 예정입니다. 또한 잘 알려지지 않은 fuzzing 메커니즘도 소개합니다.

[추천 대상] – 보안 정책 담당자 및 퍼징에 관심있는 분

 


I/O, You own: Regaining control of your disk in the presence of bootkits – Aaron LeMasters

bootkits은 아직까지 그다지 널리 쓰인다고는 할 수 없지만 일부 악성 코드들에서 심심치 않게 발생하고 있습니다. 대표적으로 TDL4와 Popureb입니다. bootkits이 많이 사용되지 않는 대표적인 이유는, 비교적 접근하기 어려운 기술이고, 하드웨어와 밀접하게 관련되다 보니 제너럴하게 만드는 것이 힘들기 때문입니다. 그렇지만 무시할 수 있는 주제인 것은 분명하기에 리서처들 사이에서 많은 주목을 받고 있습니다.

현재까지 나온 bootkits들은 시스템에 설치된 MBR을 바꿔치기 하여, 해커가 원하는 특정 악성코드를 운영체제에서 실행시킵니다. 이렇게 되면 운영체제를 변조하지 않더라도, 악성 코드를 실행하는 것이 가능해집니다. 즉, 운영체제 단에서 실행되는 안티 바이러스들은 bootkits을 탐지하기가 어렵습니다.

bookits들은 감염된 MBR을 숨기기 위해 I/O port를 이용합니다. 이 I/O port를 이용한 방식은 비교적 널리 알려졌다고 볼 수 있는데, 이 발표에서는 I/O에 접근할 수 있는 또 다른 기법을 소개합니다. 바로 windows 운영체제가 제공하는 Crash dump 기능을 이용하는 것이라고 하네요.

이 기법이 실제로 얼마나 실용성이 있는지는 모르겠지만, crash dump를 이용하여 I/O를 이용하는 기법은 잘 알려지지가 않았기 때문에, 흥미로운 주제인 것 같습니다.

[추천 대상] – 윈도우 코어 루트킷에 관심있는 해커

 


Entomology: A Case Study of Rare and Interesting Bugs – James Burton

- 아직 홈페이지에 발표 개요가 올라오지 않았습니다. TBA!

 


Exploiting the Linux Kernel: Measures and Countermeasures – Jon Oberheide

2011년, 리눅스 커널 해킹은 Jon Oberheide와 Dan Rosenberg의 해였습니다. 이 둘은 다수의 리눅스 커널 제로데이를 발견했고, 가장 보안 메커니즘이 잘 구현되어 있다고 평가받는 시스템 중 하나인 PAX의 보안 기술들을 우회하는 기법들을 발표하였습니다.

운영체제의 커널 제로데이는 갈수록 그 가치가 올라가고 있습니다. 그 이유는 리눅스 운영체제를 사용하는 안드로이드 스마트폰이 널리 보급되고 있고, 또 커널 제로데이는 샌드박스를 탈출하는데 사용될 수 있기 때문입니다. 특히 커널 제로데이는 샌드박스에서도 여전히 골칫거리인데, 아무리 strict한 샌드박스도 일부 시스템콜은 허용하는 경우가 많습니다. 그런데 만약 이 허용한 시스템콜에 버그가 있다면, 샌드박스를 탈출할 수 있게 됩니다.

Duo Security의 CTO인 Jon Oberheide는 본 발표에서 리눅스 커널 보안 메커니즘에 대해서 연구한 내용들을 공유합니다. 리눅스 커널 익스플로잇들의 기법과, 과거와 비교했을 때 보안이 얼마나 견고해졌는지, 앞으로 해결해야 할 문제가 무엇이지 얘기할 것입니다.

[추천 대상] – 리눅스 커널 exploitation 기법에 관심있는 리서처

 


ACPI 5.0 Rootkit Attacks Againts Windows 8 – Alex Ionescu

보안을 공부하시는 분들이라면 누구나 Windows Internal이라는 책을 알고 있습니다. Alex Ionescu는 해당 책의 저자 중에 한명이고, 윈도우 운영체제에 대한 깊은 이해를 갖고 있습니다.

물론 보안은 운영체제 분야에서 빼놓을 수 없는 파트이지만, Alex Ionescu는 보안에 대해서도 많은 관심을 갖고 있는데, 이번 발표에서는 ACPI 5.0을 이용한 루트킷에 대해서 소개할 예정입니다.

Rookit을 구현하는 방법은 굉장히 다양하고 low level로 갈수록 더 강력해지는 것이 정설입니다. 그 이유는, 일반적으로 low level 영역에서는 권한이 높을 뿐더러, 탐지해내기 힘들기 때문입니다. 또한, 사람들이 잘 다루지 않는 분야이기 때문에 자료가 많지 않아 접근 장벽이 비교적 높다고 볼 수 있습니다.

Windows 8에 포함될 ACPI 5.0의 일부 기능들에 대해서 설명하고, 해당 기술이 rootkit 제작에 어떻게 악용될 수 있는지 다룰 것으로 보입니다.

[추천 대상] – low level에서의 루트킷 구현에 관심있는 분

 


iOS Kernel Heap Armageddon – Stefan Esser

Stefan Esser는 한국에서도 무척 유명한 해커죠. 지금까지 여러 유명한 버그를 발견했고, 리서치 능력도 뛰어난 것으로 정평이 나있습니다. Stefan은 iOS 해킹에 대해서 다년간 연구하고 있는데, 이번 발표는 최근에 진행된 연구 결과에 대해서 발표한다고 합니다.

주로 iOS 커널 힙 메모리의 할당을 담당하고 있는 zone allocator에 대해 다룰 것으로 보입니다. 일반적으로 Stack은 관리적인 측면에서 특별할 것이 없어서 단순하지만, 힙은 그 구현 방식이 다양합니다. 힙의 운영 방식에 대해서 이해하는 것은 힙 오버플로우에서 무척 중요합니다. 그 이유는, 메모리 corruption이 일어나고 난 이후의 버퍼 흐름을 적절하게 컨트럴해야 code execution이 가능하기 때문입니다.

또한 지금까지 여러 차례 버그가 나왔던 iOS의 IOKit 드라이버 대해서도 소개할 예정인데, 해당 드라이버들에서 메모리 corruption 류의 버그가 일어났을 때, 어떤 방식으로 제어권을 획득할 수 있는지 low level 관점에서 설명한다고 합니다. 기타 제너럴한 이슈들에 대해서도 다룰 예정이니, iOS 해킹을 연구하시는 분들에게는 최고의 기회가 아닐까 생각이 듭니다.

[추천 대상] – 모바일 해킹, iOS 해킹에 관심있는 해커

 


Post Exploitation Process Continuation – Brett Moore

Insomnia Security의 Brett Moore는 이번 발표에서 메모리 corruption류의 공격에서 사용될 수 있는 Post Exploitation 기법들에 대해서 소개합니다. 사실 해커에게 만약 여러가지의 공격 벡터가 있을 때, 버퍼오버플로우 등의 메모리 corruption 공격은 우선 순위로 사용되지 않습니다. 프로세스의 메모리를 변조하는 공격들은 제어를 잘못할 경우 크래쉬가 일어날 수 있기 때문입니다.

그래서 리얼 월드에서는 Post Exploitation이 중요합니다. 메모리 corruption류의 공격을 통해서 제어권을 획득한 후에는 clean up 과정들을 통해서 프로세스가 죽지 않도록 해야 합니다. 만약 프로세스가 비정상적으로 죽거나 알림 창이 팝업된다면 공격 대상이 인지할 수 있기 때문입니다.

Post Exploitation은 사실상 제너럴한 방법은 알려지지 않았습니다. 가장 많이 쓰이는 기법으로는 현재 thread를 강제 종료시키거나 프로세스를 종료시킨 후 재빠르게 다시 실행하는 것이었는데, 이번 발표에서는 좀 더 나은 기법들을 제시한다고 합니다. 특정 대상에 dependant한 기법들을 다룰지, 제너럴한 기법을 언급할지 궁금하군요.

[추천 대상] – 리얼 월드에서 Memory corruption으로 인한 크래쉬 방지 기술들에 대해 살펴보고 싶으신 분

 


iOS Applications – Different Developers, Same Mistakes – Paul Craig

이번 발표에서는 보안 코딩 교육을 제대로 받지 않은 프로그래머들이 만들어내는 취약점들에 대해 다룰 것으로 보입니다. 특히 모바일 환경에서의 어플리케이션을 다룰 예정인데요, 이 발표를 통해 보안 코딩의 중요성을 다시 한번 알리는 것이 목적으로 보이네요.

보안 취약점은 반복되어 발생합니다. 전혀 다른 프로그래머가 작성을 하더라도, 완전히 동일한 유형의 취약점이 발생되죠. 보안 교육을 제대로 받지 않은 프로그래머들이 작성하는 코드들은 대부분 심각한 보안 문제점이 있습니다. 이들은 기능을 구현하는 과정은 잘 알고 있지만 자신이 작성하는 코드에서 보안 문제점이 발견될 경우 생길 일들에 대해서는 상상하지 못합니다.

Paul Craig은 iOS 모바일 뱅킹 어플리케이션의 보안성을 검증하기 위해 자신이 접근하는 방법을 설명하고, 발견해왔던 케이스들을 공유한다고 합니다.

[추천 대상] – 모바일 뱅킹 어플리케이션 보안이 궁금하신 분

 


Automating the Identification of Data Structures Inside Binaries – Edgar Barbosa

소스가 공개되지 않은 프로그램에서 사용되는 각종 데이터 스트럭쳐들의 타입을 자동으로 분석할 수 있다면, 여러모로 유용합니다. 가장 대표적인 예는 두가지인데, 첫째는 리버싱 작업을 굉장히 쉽게 해줄 수 있고 둘째는 효과적인 퍼징을 수행할 수 있게 도와줍니다. 가령, 퍼징 시에 데이터 타입을 미리 알 수 있다면 해당 데이터 타입에 맞는 테스트 케이스를 작성할 수 있기 때문입니다.

본 발표에서는 x86 환경에서 Intermediate Language를 이용하여 데이터 스트럭쳐의 타입을 자동으로 알아내는 방법을 연구한 내용을 애기합니다. 동적, 정적 분석을 활용하였고, 심볼 파일을 이용한 것이 아니라고 합니다. 실제 마이크로소프트 바이너리들을 대상으로 데이터 타입을 알아내는 데모를 보일 예정이라고 하는군요.

발표자인 Edgar Barbosa는 그 유명한 가상 머신 루트킷인 Blue Pill의 개발자 중에 한명입니다.

[추천 대상] – 자동화 분석에 대해 관심있으신 분

Follow

Get every new post delivered to your Inbox.