[24] 보안 시스템의 대명사-방화벽(firewall)

분류없음 2009.01.14 15:50
원래 방화벽은 건물이나 자동차에서 화재가 다른 부분으로 번지는 것을 막아 주는 것을 의미합니다.
 
The term "firewall" originally meant a wall to confine a fire or potential fire within a building
 
그런데 한 십 수년전부터 네트워킹에도 방화벽이 생겨 났는데 초기의 패킷 필터링에서 스테이트풀 인스펙션을 거쳐 어플리케이션 데이타 분석까지도 하게 되었지요. 이제는 IPS라는 형태로 변형되어 발전하기도 하고 있습니다. 대학 도서관에서 초창기 체크포인트사의 Firewall-1에 대한 번역 잡지 기사를 읽으면서 정말 대단한 물건인데라며 감동했던 생각이 납니다.
 
그런데 24 시즌 7 초기 에피스드에서 방화벽 개발자가 끌려 가서는 피를 흘리며, 항공 관제 시스템을 뚫는 물건을 만들어야 했습니다.
 
방화벽 개발자가 항공 관제 콘트롤까지 두루 두루 섭렵한 것인지, 24 작가들이 방화벽의 의미를 그냥 보안 시스템을 통칭해서 일컬은 것인지 조금 헷갈립니다. 개인적으로는 후자인 듯한 생각이 드네요.
 
생각해보면 방화벽 개발자를 데려다가 항공 관제 시스템 침투 모듈을 만드는 것이 바보 같은 발상이지만, 그 만큼 보안이라는 것이 우리의 삶과 가까워졌다라는 뜻인듯 해서 재미 있습니다.
 
십수년전에 고객사에 방화벽 설치하러 왔다고 그러면 그러면 건물 어디에 설치할 껀지 물어 봤다라는 재미 있는 에피소드도 있습니다.

Posted via email from bugtruck's posterous

신고

[맥] WIRED, 넷북용 해킨토시 기사를 철회하다

분류없음 2009.01.14 15:31
흠 Wired 뉴스레터에 넷북 해킨 토시 이야기가 나오길래 들어 가서 보려니까 없어졌더군요. 그래서 너무 일찍 눌러서 없나 싶었습니다.
 
그런데 애플이 WIRED에 압력을 행사했군요.
WIRED에 그러한 기사를 올리는 것 자체는 불법이 아니라는데 말이죠. 말썽을 일이키기 싫었나 봅니다. 그래도 법적으로 저러한 것이 불법이 아니라는 것이 참 대단하다는 생각이 듭니다. 만약에 WIRED에서 버팅겼다면 애플도 어쩔수는 없는 것이죠.

Posted via email from bugtruck's posterous

신고

QT, LGPL 채용

분류없음 2009.01.14 14:07
QT를 사용하지 않으시는 분한테는 뭐 그저 그런 얘기이지만, 저처럼 QT 가지고 이것 저것 몇년간 취미로 만들었던 사람에게는 정말 희소식입니다.
 
 
이전 라이센스 정책은 상용과 비상용 구분이 있어서, 비상용은 무조건 GPL이었죠. 그래서 뭔가 상업적인 용도나 아니면 다른 라이센스를 쓴 코드가 섞인 다거나 하면 정말 고역이었습니다. 저도 DarunGrim을 작업할 때에 멋모르고 PyQT를 썼다가 결국 릴리즈를 몇일 앞두고 회사에 이야기 해서 BlackAdder를 수백불을 내고 구입해야만 했던 경우가 있었습니다. 물론 그것도 엄밀하게 따지면 라이센스 정책에 위반이 될 수도 있다고 합니다(BlackAdder로 작업을 애초에 한 것이 아니기 때문에). 더우기 저는 오픈소스로 코드를 공개하는 것임에도 불구하고 GraphViz등 GPL이 아닌 라이센스를 섞인 놈이 같이 들어 가 있으니 어쩔 수가 없더군요.
 
작년에도 QT로 몇가지 끄적거려 봤지만, 라이센스 정책이 머리 아파서 결국에 공개를 모두 포기했습니다.
 
이제 그 동안 접어 두었던 QT를 슬그머니 꺼내어서 먼지도 털고 해야겠습니다. 정말 멀티 플랫폼으로는 가장 마음에 드는 놈인데 말이죠.
 
이런 소식 들으면, 어쩐지 하루가 즐거워 집니다 ~~~

Posted via email from bugtruck's posterous

신고

PySMB - 파이썬으로 만들어진 SMB/CIFS 클라이언트

분류없음 2009.01.14 13:44
MS09-001 SMB 서버 취약점 같은 부분을 테스트하기 위해서 유용한 툴입니다.
 
 
100% 파이썬이어서 좋은 점은 하부 코드들까지 모두 파이썬이기 때문에 손쉽게 수정이 가능하고 바로 테스트가 가능하다는 것이죠. 지금까지의 SMB 취약점의 역사를 보면 파라메터 카운터나 맥시멈 카운터들을 비롯한 SMB 패킷의 수많은 카운터들에서 많은 문제가 발생합니다. 그 부분만 엉뚱한 값을 가지게 소스를 수정해서 쉽게 취약점 테스트가 가능합니다.
 
문제는 도대체 어디에서 문제가 생기는지 어디에도 나오지 않는 다는 것인데, 그것은 DarunGrim을 이용한 바이너리 디핑(Binary Diffing)으로 가능합니다.

Posted via email from bugtruck's posterous

신고

오픈 소스 하드웨어

분류없음 2009.01.14 13:37
---------- Forwarded message ----------
From: Matt Oh <oh.jeongwook@gmail.com>
Date: 2009/1/14
Subject: 오픈 소스 하드웨어
To: Bugtruck <bugtruck@googlegroups.com>


하드웨어 쪽은 영 잘 모르지만, 요즘에 오픈소스 하드웨어가 유행이더군요.
 
국내에도 많은 관심층들이 있는 것 같습니다.
 
 
오픈 소스라는 것은 도면을 받아다가 자기 마음대로 수정해서 중국 공장에서 대량 생산을 해 대어도 아무런 법적 제재 없을 뿐더러, Arduino 측에서도 대 환영이랍니다.
 
왜 그런지는 기사를 잘 읽어 보시면 그들의 입장을 아실 수 있을 것입니다.
 
소프트웨어 오픈소스는 소프트웨어들의 발전에 지대한 공헌을 한 것은 아무도 부정하지 못할 것입니다. 그것이 GNU이든 아파치이든, BSD 이든 상관 없습니다. 저만 해도 이미 오픈소스에 많은 빚을 지고 있습니다. 그래서 공개하기 싫은 제 코드들도 반은 의무감에 공개하기도 합니다.
 
과연 오픈소스 하드웨어가 비슷한 혁명을 하드웨어계에 불어 넣고 있는 것 같습니다. 앞으로는 정말 신나는 세상이 될듯 하네요. 뭐 이미 DIY용으로 설계 도면 공개하는 사이트들이 부지기수이기는 하더군요. 앞으로는 가전 제품도 자기가 조립해서 쓰는 날이 멀지 않을 것 같습니다.
 
완제품 사기에 돈이 없거나 스스로 만들어 보고 싶은 사람들은 절반도 안되는 가격에 frugal하게 테크놀로지를 영위하면서 살 수 있는 것이죠.
 
궁금한 것은 과연 Arduino가 수익을 창출하고 성공하느냐입니다. 지금 상황은 어느 정도인지 잘 모르겠군요. 하드웨어 계의 레드햇이 될지 안될지...궁금하군요.
 

Posted via email from bugtruck's posterous

신고

CES 2009 소식

분류없음 2009.01.14 13:06
새로 나온 팜소식에다가 소니 VAIO P 등등.
 
기자가 몇마디로 요약하는군요. 아직 불경기에 CES가 적응을 못해서 아직도 optimism이 만연해 있다라고... 내년에는 아마도 더 규모도 작아지지 않겠냐고 하는데...
 
제발 IT라도 흥했으면 좋겠습니다.
 
"Windows 7"이니 맥이니 iPhone이니 모든 선수들이 나와서 올해를 좀 달구어 주었으면 하는 바람이... 결국 그것이 제 직업과의 흥망과도 연결이 되는 것 같더군요.

Posted via email from bugtruck's posterous

신고

[나] 느림 증후군 디버깅

분류없음 2009.01.14 12:59
오늘 그냥 나 자신에 대해서 취약점 분석을 해보았다.
 
나에게는 치명적인 약점이 있다.
 
바로 "느리다" 라는 것이다. 늑장을 부리는 것이 체질화가 되어 있다.
 
오늘만 해도 아침에 일어나서 내가 좋아하는 팟캐스트 듣고 책 읽고 하면서 늑장을 부렸다.
결국 출근 시간 20분을 남겨 놓고, 아침을 허겁지겁 먹게 되었고 샤워도 초스피드로 하고도 결국 5분 늦게 출발하게 되었다. 결국 급하게 먹은 아침 때문에 오전 내내 소화 불량에 시달리게 되었다.
 
내 늑장 부림은 가장 오래된 기억을 거슬러 올라 가자면 초등학교 1학년 때까지 거슬러 올라 간다.
 
나는 학교 가는 것이 제일 싫었다.
 
나이도 다른 아이들보다 한살이 어렸는데, 동네 친구들이 모두 학교에 가버리게 되자 놀 친구가 없어질 것을 염려한 어머니의 치마바람으로 자의에 상관 없이 학교라는 것을 나니게 되었다. 생일이 12월인데다가(사실은 이듬해 1월인데 음력으로 주민등록을 올려서) 1년을 더 먼저 들어 갔으니 거의 2년을 먼저 들어 간 셈이다.
 
그래서 나는 학교에 적응하지 못했다. 이미 어린 나이에 나는 사회 부적응자의 길을 걷기 시작한 것이다.
그래서 나는 학교에 항상 늦었다. 가지 않으려고 마지막까지 온갖 투정을 다 부리다가 겨우 가고는 했었다.
학교에 가서도 내가 수업이나 제대로 따라 갔는지 모르겠다. 부적응으로 인한 많은 부끄러운 에피소드들이 많지만 이것들은 공개하기조차 꺼려진다. 당연히 초등학교 4학년까지 나는 반의 거의 꼴찌를 도맡아서 했었다. 나는 내가 받은 수업의 내용을 전혀 이해하지도 못하면서 그냥 의무감으로(의무교육이니까) 다니고 있었던 것이다. 한번은 초등학교 4학년 때에 어려운 수학 문제를 내가 어쩌다가 다 맞춘 적이 있는데, 아무도 나를 믿지 않았다. 다들 내가 짝궁의 답을 베꼈다라고 비난했다.
 
그런 버릇은 고등학교까지 따라갔다. 항상 아침 등교 시간에 늦어서 주번들까지 모두 철수한 아무도 없는 교문을 혼자서 어기적 어기적 걸어 들어 간 적이 한 두번이 아니니 말이다. 한번은 그렇게 혼자 걸어 가는 나의 모습을 우연히 보신 어느 선생님의 한심하다는 듯한 표정이 아직도 생생히 기억이 난다.
 
주위의 친구들은 항상 나보다 나이도 많고, 키도 크고 힘도 쎄었으므로 나는 항상 피해다니는 입장이었다. 고등학교 2학년때까지 나는 우리 학급의 거의 마지막 번호였다. 즉, 나보다 키가 작은 아이들은 1-2명에 불과했었다. 물론 고등학교 2학년 여름 방학 때에 갑자기 걸어 다니기 힘들 정도로 아픈 후에 키가 커버려서 다른 아이들을 따라 잡기는 했다. 하지만, 이미 학교 생활은 끝나 가는데 그 때에 키가 커 봐야 무슨 소용이랴.
 
아마도 이 때부터 내 인생의 "무드"가 결정 된듯 하다. 말없고 조용하고 내성적이며, 혼자 노는 스타일이 된 것이다.
그것을 소위 요즘에 "왕따"라고 부를 수도 있겠다. 하지만, 난 스스로가 스스로를 고립시키는 것을 즐겼다. 그것이 훨씬 편했던 것이다. 그래서 머리가 안 좋았음에도 불구하고, 공부라는 것을 취미로 삼게 되었는지도 모르겠다. 솔직히 공부 말고는 어디 비빌 언덕이 없었다. 운동도 안되고, 외모도 안되고, 집안 재력도 안되고. 나보다 머리 좋은 애들은 항상 나보다 적은 시간을 공부에 투자했고, 그래서 항상 나에게 지고는 했다.
 
뭐 변명은 여기까지. 어쨌든 이 버릇을 고쳐야 한다. 늦는 것은 좋지 않다.
 
그래서 PDA에 일정 관리도 넣어 두고, 알람도 세팅해 놓고(출근 시간이 되면 PDA에서 한번, 알람 시계에서 한번 10분 간격으로 알람을 내어 준다). 구글 캘린더에 온갖 사항을 입력해 놓고(심지어 언제 머리를 깎을 것인가 에 대해서도, 안 그러면 까먹고 1년 동안 머리를 안 깎는 수가 생긴다.) 온갖 짓을 했지만, 역시나 그 버릇은 쉽게 고쳐지지 않는다.
 
어쨌든 올해에 고쳐야 할 문제중의 하나이다. 오늘 부터 더 노력할 것이다.
 
- 디버깅 끝.
 
 

Posted via email from bugtruck's posterous

신고

[24] 토니 알메이다는 테러

분류없음 2009.01.13 23:44

리스트가....













맞을까?


Posted via email from bugtruck's posterous

신고

[윈도우즈]커널에서 유저랜드 메모리 할당의 이유

분류없음 2009.01.13 18:37
금방의 이 예제에서 왜 유저랜드에 메모리를 할당해야 할까?
n = (ULONG *)MmMapLockedPages(mdln, UserMode);
ret = s_fnZwQuerySystemInformation(SystemModuleInformation, n, 0, n);
 
 
s_fnZwQuerySystemInformation을 원래의 ZwQuerySystemInformation를 가리키는 함수 포인터이다. 그런데, 원래의 함수를 부르는데에 MDL로 지정한 유저랜드 영역을 넘겨 주고 있다. 커널 공간에서 nt커널의 함수를 부르는데 왜 유저랜드의 메모리를 인자로 넘겨 주어야만 할까?
 
이유는 간단하다. 하부의 모든 콜에서 GetPreviousMode()를 체크하여 유저랜드에서 유래한 콜인 경우에는 버퍼가 유저랜드에 있는 것으로 가정하기 때문이다. ProbeForRead()등에 의해서 이러한 체크가 이뤄진다.

"The ProbeForRead routine checks that a user-mode buffer actually resides in the user portion of the address space, and is correctly aligned. "

 
이 훅은 결국 바로 앞 모드가 유저랜드이므로 유저랜드의 메모리인 것 처럼 메모리에 대한 MDL을 설정해 주어야 하는 것이다.
 
실제로 MDL로 설정하지 않고, ExAllocatePoolWithTag로만 할당한 메모리를 넘겨 주면 바로 파아란 BSOD를 볼 수 있다.
 
 
그래서 이 이론에 근거해서 NewZwQuerySystemInformation를 다시 보면 참으로 어이 없는 실수를 하고 있는 것을 알 수 있다. 바로 그 자신이 ProbeForRead()로 유저랜드에서 넘어온 버퍼를 검사하고 있지 않은 것이다. 이 경우 유저랜드의 악의적인 프로그램에 의해서 쉽게 BSOD를 내어 주게 된다.

Posted via email from bugtruck's posterous

신고

[윈도우즈] 커널 모듈 숨기기

분류없음 2009.01.13 17:26
커널에서 ZwQuerySystemInformation을 후킹해서 모듈을 숨기는 방법이다. 물론 이 방법은 직접  PsLoadedModuleList를 traversing하면 쉽게 발각된다. 하지만 이 예제 코드는 MDL을 사용해서 유저랜드에 메모리 할당하기 등과 같은 여러가지 커널과 관련된 기법들 을 포함하고 있어서 꽤 유용하다.
 
핵심적인 코드는 다음 부분, 모듈 이름이 현재 드라이버 이름과 같으면 넘기지 않는다.
c = (PCHAR) ((PULONG)SystemInformation + 1); p = (PSYSTEM_MODULE_INFORMATION)(q + 1); for(i = 0; i < *q; i++) { if(_strnicmp(p[i].ImageName + p[i].ModuleNameOffset, g_DriverName, g_uiDriverNameLen) != 0) { memcpy((PVOID)c, (PVOID)(&p[i]), sizeof(SYSTEM_MODULE_INFORMATION)); c += sizeof(SYSTEM_MODULE_INFORMATION); } }

Posted via email from bugtruck's posterous

신고

티스토리 툴바