Search Results for '0day'


2 POSTS

  1. 2009.11.29 Finding bugs와 Exploiting의 기술적 난이도는 다른가? (3)
  2. 2009.11.22 IE 6, 7 0-day 나왔습니다. (8)
사실 해킹은 그 시작에서부터 성공하는 과정 사이에 엄청나게 많은 단계가 복잡하게 얽혀 있습니다. 공격을 원샷에 성공하는 경우가 있다면 무척 좋겠지만 안타깝게도 지금 당장 http://milw0rm.com 에 올라와있는 Exploit을 돌려봐도, 그런 영화같은 상황은 잘 일어나지 않죠.

그 복잡한 과정을 여기서 전부 설명하자면 아마도 책이 여러 권 나와도 부족할 정도일 것입니다. 아주 많은 퍼즐이 있다고 상상하시면 됩니다. 이 짧은 글에서는 그 많은 퍼즐 중에서도 일부를 바라보고 몇 가지를 알려드리려 합니다.

우선 지극히 단순하게 문제를 바라보면, 해킹 기술이란 것은


- 버그 찾기 (Finding Bugs with beer)
- 찾은 버그를 Exploit하기 (Exploiting the bugs with soju)


이 2가지로 나눌 수 있습니다. 해킹을 많이 접해보지 못하신 분들을 위해서 보충 설명을 드리자면, 버그를 찾는 것과 찾은 버그를 Exploit하는 것은 전혀 다른 이야기라고 할 수 있습니다.

버그를 찾은 것에 성공한 단계도 물론 훌륭한 것이지만, 이 버그는 Exploit이 될지 안될지 아직 모르는 상태입니다. 해커는 이 단계에서는 이 버그가 Exploit이 되는지 안되는지 아직 정확하게 알 수 없습니다. 여기서 말하는 Exploit이 된다라는 의미는,

"해당 버그를 이용하여 공격에 성공할 경우 목표한 시스템에서, (최소한 현재보다) 높은 권한을(혹은 정보를) 획득할 수 있다."


로 대략 정의할 수 있습니다. 반대로 말하면, 버그를 발견하여도 Exploit이 되지 않는다면, 이런 버그는 "심각한 취약성"으로 취급되지 않을 수 있습니다. 예를 들어 단순히 Crash만 일으키는 것이라면 좋은 버그로 평가받기 힘듭니다. (물론 Crash가 일어나는 서비스에 따라서 다르게 취급되긴 합니다. 가령, TCP/IP Stack에서 Crash가 일어날 수 있다고 하면, 꽤 좋은 버그입니다.)

여기서 드는 의문점은, "아니, 버그면 Exploit이 가능해야 하는거 아니야? 안되는 경우는 왜 생기지?"일 것입니다. 이런 질문을 받았을 때 모든 것을 제대로 설명해야 한다면 아마도 수십 일이 더 걸릴 수도 있기 때문에 또 간단하게 설명을 해보겠습니다.

버그는 프로그램 상에서 일어나는 문제점입니다. 어떤 문제는 아주 사소한 에러라 작게는 사용자에게 아무런 피해를 안 줄수도 있고 심각하게는 시스템 전체가 마비되거나 완전히 장악당하게 될 수도 있습니다.

이러한 현상은 프로그램 안에 있는 알고리즘 중에 어떤 부분에서 문제가 일어나느냐에 달라집니다. 만약 데이터가 이동될 때 이것을 잘 관리하지 않아서 프로그램의 메모리에 있는 어떤 중요한 내용을 해커가 바꿀 수 있다면, 심각한 피해를 초래할 수 있습니다.

다시 버그 찾기로 돌아가서, 앞에서 말했지만 해커는 아직 이 버그가 Exploit이 가능한지 아닌지 모릅니다. 버그를 찾는 방법은 아주 다양하게 이론이 제시되어 있고 어떤 것은 수학 이론이 가미된 복잡한 방법도 있으며 어떤 것은 아주 단순한, 심지어 순전히 "운"으로 버그가 발생되는 경우도 있습니다.

버그를 찾은 후에, 실제로 Exploit을 수행하는 과정은 대단히 많은 내용을 해커가 분석을 해야 하기 때문에, 일반적으로는 버그 찾기보다 Exploit을 하는 것이 더 복잡하다고 볼 수 있습니다.

즉, Exploit에 성공하기 위해서 수행하는 과정들이 버그를 찾는 것보다는 기술적으로는 더 힘들고 어렵다고 볼 수 있습니다. 실제로 똑같은 Vector에서 발생되는 똑같은 취약점이라도, 어떤 해커는 성공하지 못할 수 있고, 어떤 해커는 성공할 수도 있습니다.

예를 들어 Alexander Sotirov는 다른 사람은 Exploit하지 못 했던 버그이지만 자신은 성공했던 적이 있다고 하더군요. 버그의 유형과 운에 따라서 다르지만 뭔가를 Exploiting하는 과정은 대단히 쉬울 수도 있지만 대단히 많은 작업이 필요할 수도 있습니다. 특히, 좋은 Reliability를 갖기 위해서는 그야말로 노가다가 필요합니다.

이 글은 "버그를 찾기만 하는 작업은 뭐 별 대단할 것이 없어.. 진짜 중요하고 어려운 기술은 제대로 된 리버싱을 통해서 Exploiting를 하는 거야."라고 말하고 있는게 아닙니다. 일단 버그를 찾아야 그 다음 단계가 진행되기 때문이고, 버그를 찾는 방식에 대해서도 기술적인 발전이 많이 이루어졌기 때문입니다.

단, 해커가 되고 싶은 분들을 위해서 롤 모델을 한명 말씀드리자면 Iphone hacker로도 유명한 Charlie Miller처럼 해킹을 할 수 있도록 노력해야 합니다. 어떤 해커들은 버그를 찾는 것을 더 좋아하거나 혹은 버그는 직접 안 찾고 익스플로잇 하는 걸 더 선호하거나로 나뉘는데 Sotirov 말에 의하면 Charlie Miller는 둘 다 아주 능숙하다고 합니다. 아마도 이 글을 읽어시는 분들은 Charlie Miller(우리나라 나이로 37세)보다 나이가 어릴 확률이 높으므로 열심히 하면 따라 잡을 수 있을 겁니다. ㅎㅎ

정리를 하자면,

기술적인 난이도는 Exploiting가 더 높다고 할 수 있지만, 버그를 Finding하는 작업도 무척 중요하다.

버그는 어떻게 찾아야 하고, 어떤 것들이 Exploit을 할때 그렇게 복잡한지에 대한 케이스는 앞으로 틈틈히 올려보겠습니다.



Tag : 0day, bugs, exploit, exploiting, hacking, Security

  1. beistlab

    | 2009.11.29 17:36 신고 | PERMALINK | EDIT | REPLY |

    글과는 아무 상관 없는 Guinness 맥주.. beist의 맥주 중에 하나임

  2. lycan

    | 2009.11.29 18:46 | PERMALINK | EDIT | REPLY |

    ㅎㅎ 저는 호가든과 감자칩을 먹고 있음;

  3. beistlab

    | 2009.11.29 20:35 신고 | PERMALINK | EDIT |

    부럽네요 ㅋㅋ 호가든도 짱임..

Write your message and submit

IE 6, 7 0-day 나왔습니다.

Posted 2009.11.22 10:32 by beistlab
IE 6과 7 환경에서 작동하는 취약점이 나왔습니다. 아마도 wild에서 캐치한 것은 아니고 bugtraq에 최초로 올라온 것 같네요. style 관련 태그에서 취약점이 일어나는 것 같습니다.

http://www.securityfocus.com/archive/1/507984/30/0/threaded

해당 취약점에 대한 설명을 symantec에서 comment하였습니다.

http://www.symantec.com/connect/blogs/zero-day-internet-explorer-exploit-published

음.. 아직 MS에서 패치를 발표하지 않았을테니, 또 이슈가 되겠군요.  패치가 나오기 전까지의 권고사항은 다음 정도로 요약할 수 있겠군요.

1) Anti-Virus 제품을 설치한다.
2) 이상한 사이트는 돌아다니지 않는다.
3) IE8으로 업그레이드한다. (IE 6,7에만 영향을 주는 듯 합니다.)
4) 서핑을 하다가 갑자기 브라우저가 죽거나, 혹은 심하게 멈추는 현상이 있을 경우 공격을 당하고 있다고 의심하고, 백신 검사 등을 수행한다. (Overflow 공격이 trigger 될 때 메모리가 오염되어 프로세스가 죽는 경우가 있습니다, 또 shellcode 실행 확률을 높이기 위해서 수행하는 heap spray 때문에 브라우저가 매우 느려지는 현상이 있습니다.)

비교적 최신 정보지만 한 3일 정도는 된 정보이니 criminal crew들은 이미 good reliability를 가지는 exploit를 제작하여 사용하고 있지 않을까 예상됩니다.

Tag : 0-day, 0day, hacking, IE6, IE7, Style, 취약점

  1. jz-

    | 2009.11.22 12:30 신고 | PERMALINK | EDIT | REPLY |

    오오오오오오오오오 블로그만드렀꾼여!!!!!!

  2. beistlab

    | 2009.11.22 13:30 신고 | PERMALINK | EDIT |

    ㅋㅋ 네 메뉴가 넘 어려워요
    기능도 잘 모르겠고 ㅋㅋ

  3. 6l4ck3y3

    | 2009.11.22 13:07 | PERMALINK | EDIT | REPLY |

    축하빵 트랙백 하나 남겼어요. ^^;

  4. beistlab

    | 2009.11.22 13:30 신고 | PERMALINK | EDIT |

    오 최초 트랙백 감사합니다!
    사실 트랙백이 뭔지 잘 모름..

  5. 6l4ck3y3

    | 2009.11.22 13:54 | PERMALINK | EDIT |

    우리말로 번역하면 "관련글"이라고 볼 수 있는...

    내 블로그에 쓴 글을 상대방의 글에 통째로 댓글로 다는 것을 말해요. 흔히, "관련글 남겼다", "트랙백 걸었다"라고 표현하구요. 그냥 간단하게 조금 긴 댓글이라고 생각하세요.

  6. beistlab

    | 2009.11.22 20:50 신고 | PERMALINK | EDIT |

    danke!

  7. rex0

    | 2009.11.23 19:34 신고 | PERMALINK | EDIT | REPLY |

    저도 트랙백 하나 날렸어요~ 'ㅁ'

  8. beistlab

    | 2009.11.24 22:02 신고 | PERMALINK | EDIT |

    잘하셨습니다 앞으로도 자주 ㅋ

Write your message and submit