섹시한 모니터링

 | C, C++
2009/04/29 21:14

섹시한 모니터링





아주 웃긴 CPU 모니터링 체크 프로그램이 있네요.

http://hotbabe.planlos.org/download.html

설명이 필요없습니다. 직접 써보셔야 압니다.

가장 빨리 테스트 할 수 있는 방법은 프로그램을 실행해 놓고 백신 같은거 돌려서
CPU 를 최대한 올라가게 만드는 겁니다.
그러면 저 아해가 CPU 점유율에 따라 옷과 관련된 어떤 액션을 취할겁니다 ;;;

남자분만 쓰시는게 좋을듯 ;




사용자 삽입 이미지



SetTimer()로 만들어 두어서 그런지, CPU가 찰 때 즉시즉시 반영이 되지 않던데,
스레드로 만들고 우선순위 팍팍 높여놓았다면 더 좋지 않았을까 하는 생각이 드네요 흐흐흐

프로그램의 요점은 비트맵 4개 넣고 투명 속성을 CPU 율에 따라 달리 해 준다는 것
CCpuUsage 클래스는 그대로 가져다가 쓸만하네요.
소스까지 오픈되어 있으므로 한번 보세요 :)

성희롱 소지가 있으므로 여직원분들이 계신 앞에서는 실행하지 마시고...
(그러나 참고로 이걸 저한테 보내주신 분은 여자분이라는 것 ; )



저는 절대적으로 CPU 체크 소스를 공유할 목적으로 이 포스팅을 한겁니다 !!!

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/270 관련글 쓰기

댓글을 달아주세요

  1. 2009/04/29 21:46
    댓글 주소 수정/삭제 댓글
    감사합니다 ㅎㅎ
    • 2009/05/01 16:35
      댓글 주소 수정/삭제
      감사합니다 ㅋㅋ
  2. 2009/04/30 09:16
    댓글 주소 수정/삭제 댓글
    오~ cpu사용률을 체크하는 공부를 하기에 너무나도 좋은 소스이군요. 정말 공부만을 위한 이런 공유 감사합니다.
    공부할려고 소스대신 리소스(res/*.bmp)를 집중적으로 봤습니다.
    • 2009/05/01 16:35
      댓글 주소 수정/삭제
      최근 댓글중 가장 욱긴 거 같아요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    • 2009/05/02 03:23
      댓글 주소 수정/삭제
      오~~ jz님 Hotbabe~~(퍽) ㅋㅋㅋ 저도 공부를 위해서 CHotBabeWnd::DrawHot() 함수를 고쳐보았습니다... cBitmapX 를 고쳐보았죠~~~
  3. 조차장
    2009/04/30 10:12
    댓글 주소 수정/삭제 댓글
    포스팅으로 올라오다니,, 집요하시군요 ㅋ
    • 2009/05/01 16:35
      댓글 주소 수정/삭제
      언제 차장으로 진급하셨습니까 ;
  4. 상차장
    2009/04/30 10:17
    댓글 주소 수정/삭제 댓글
    ㅇ ㅣ긋바요
    • 2009/05/01 16:35
      댓글 주소 수정/삭제
      상차장 ㅋㅋ
  5. 2009/04/30 12:15
    댓글 주소 수정/삭제 댓글
    오오오~~ +_+ 바로 다운 클릭 (헤벌레)
    =0= 좀 살펴보고 제 블로그에다가도..ㅋㅋㅋ;;
    좋은거 감사용~~ +_+
    • 2009/04/30 12:24
      댓글 주소 수정/삭제
      -0- 아무래도 주위 눈치보여서;;
      게임 창모드로 만들어놓고..
      살짝 걸쳐두고 테스트해봤는데;; =0=;; 이건 뭐..ㅋ
      98% ~ 100% 일때의 그 적나라함이란..쿨럭;;.
    • 2009/05/01 16:36
      댓글 주소 수정/삭제
      음 일부러 CPU 사용율을 계속 높히고 싶어 :$
  6. 2009/04/30 16:40
    댓글 주소 수정/삭제 댓글
    일하다가 설치해서 볼려고 했는데...
    하마터면 큰일날 뻔했네요...ㅋㅋㅋ
    • 2009/05/01 16:36
      댓글 주소 수정/삭제
      음 저희 층에는 직원의 남성 비율이 100%라서 딱히 가릴건 없네요 ㅋ ;;
  7. 2009/05/01 15:03
    댓글 주소 수정/삭제 댓글
    저도 절대로 CPU 점유율 확인해보기 위해서 다운받았습니다.
    • 2009/05/01 16:37
      댓글 주소 수정/삭제
      하하하하하하 너무 웃겨요 ㅎ
  8. p01nt
    2009/05/10 07:07
    댓글 주소 수정/삭제 댓글
    지금 열심히 무한루프 돌리고 있습니다...흐흐
  9. 2009/05/18 10:51
    댓글 주소 수정/삭제 댓글
    *-_-*

    PROCESS_INFORMATION pi;
    STARTUPINFOA si;

    SetProcessAffinityMask(GetCurrentProcess(), 2);
    memset(&pi, 0, sizeof(PROCESS_INFORMATION));
    memset(&si, 0, sizeof(STARTUPINFO));

    si.cb = sizeof(STARTUPINFOA);
    si.dwFlags = 0;

    CreateProcessA(".\\HotBabe.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);

    SetProcessAffinityMask(pi.hProcess, 2);
    printf("wow, naked function?!\n";);
    ResumeThread(pi.hThread);
    while(1)
    {
    //char *p = (char *)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, 1024);
    DWORD dwret;

    HANDLE hFile = CreateFile(L"\\.\C:\\dummyda.dat", FILE_ALL_ACCESS, FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL,
    OPEN_ALWAYS,
    FILE_ATTRIBUTE_NORMAL,
    0);

    //WriteFile(hFile, p,1024,&dwret, 0);
    }

버그를 리포트하는 자세 & 버그를 수정하는 자세




어떠한 프로그램이든 버그는 있습니다. 그리고 버그는 보통 내부 테스트 중이 아닌
필드 서비스 중에 발생합니다. 그런 버그는 시스템이나 환경 탓에 발생하는 이유가
대부분이라 뭐 무조건 개발자를 탓하기도 사실 그렇습니다. 인간들이 사용하는 컴퓨터의
환경이 당연히 제각각이고 그런 알 수 없는 상황에서 또다른 인간이 짠 프로그램이라면
당연히 버그가 한두번쯤은 발생할 수밖에 없거든요. 따라서 버그가 발생하면 "아 ㅅㅂ
또 문제있네 어떤 색퀴가 만든거냐
" 라고 외칠 시간 있으시거든 잠이나 좀더 주무시고
최대한 빨리 원인을 밝혀서 재현 스텝에 들어가고 문제를 해결해야 합니다.

여기서 그 버그가 발생하였을 때, 문제를 제기하는 자세에 대해 한번 생각해 보려고 합니다.
일단 서비스 하는 입장 그리고 사용하는 입장에서 버그 발생이라는 것은 무척 화가 나는
일이라는 것은 부정할 수 없는 명제입니다. 충분한 개발 시간을 제공하였고, 충분한 테스트를
진행 하였지만 버그가 발생했습니다. 화가 나죠. 이제 에러 리포팅을 해야 할 차례입니다.
어떻게 하는 것이 올바른 태도 일까요.

버그가 발생했을 때는 먼저 발생하는 상황, 그리고 더 나아가서 재현이 될 만한 환경
그리고 로그나 덤프가 있다면 해당 파일을 캐취해 놓는 그런 기본적인 자료확보는
아주 기본 중의 기본이 되는 내용입니다. 개발자는 이런 기반을 제공받는다면 버그를
정말 빠른 시간 안에 수정할 수 있게 됩니다. 하지만 그렇게 충분한 데이터를 확보해 둔
상태에서 버그 리포트를 제공하는 사람이 얼마나 될까요? QA 전용 인력이거나 본래
운영력이 있으신 분들이라면 모르겠지만 걍 민간인 담당자나 대부분의 사람들은
보통 이렇습니다.

"아 ㅅㅂ 이거 갑자기 크래시 되네"
"야 당장 전화 때리고 멜 날려. 문제있다고 얘기해."


그리고 개발팀에 일단 문제있다고 컴플레인을 제기합니다. 뭐 거기까지는 좋습니다.
일단 상황 리포팅만 하고 이후에 추가 데이터를 전달할 수도 있으니까요. 하지만
상당히 많은 담당자들이 원인 추적을 할만한 어떠한 자료제공도 없이 그저 조금전
자기 눈으로 문제 발생한 상황만을 들먹이며 계속 고쳐내라고 막무가내로 고집만을
부립니다. 그러면 당연히 해결이 될 수가 없겠죠... 그리고 그렇게 시간이 흘러갑니다.
무언가 요청이 처리되지 않는 것이라 느껴지고 있는 시간이 반복되면 이 버그 리포트는
"개발팀에서 비 협조적이다" 라는 공포스런 항의문으로 둔갑하여 윗선에게 보고되고
개발팀은 정말 황당하고 억울하고 속상한 채로 고렙들에게 불려가게 됩니다.


ㅇ ㅏ... 이 많은 반찬 기능 들 중에서 어느 것이 설사 버그 의 원인인지
똥색깔 증상 이라도 알려줘야 원인파악을 하죠 ㅠ ㅠ


저는 과거에 이런 사례가 있었습니다.

저희가 만든 모듈을 중국의 어떤 담당자(갑님)가 테스트 하다가 본인의 PC 에서 에러
코드를 뱉으며 종료했다는 리포트를 해왔습니다. 하지만 그당시의 에러 로그도 없고
화면 캡쳐도 없으며 어떤 에러인지조차 기억조차 나지 않는다고 합니다. 그러나
분명히 에러가 발생하여 자기는 프로그램이 종료되었으며 다시 재현되지는 않지만
이 문제에 대해 원인을 밝히고 반드시 해결해 줄 것을 요청(재촉)받았습니다.

뭐 캐황당하죠 -_-; 어떤 프로그램이든 한번씩 에러코드를 뱉으며 종료할 수는 있습니다.
그것이 내부의 버그이든, 사용자의 시스템 상태가 이상해서 일시적으로 발생한 것이든
어쨌든 지속적으로 발생하지 않고 재현이 불가능한 것이라면 그때 상태의 현황이나
데이터는 반드시 필요한 법입니다. 하지만 로그도 없고 화면 캡쳐도 없고 심지어
겪은 본인이 어떤 에러인지 기억조차 나지 않는다는 상황에서 무엇을 해결할 수 있을까요 ;

그래도 해결을 해보려고 온갖 삽질을 다 해봤습니다. 플그램 실행중 다른  오만 플그램을
다 띄워 보고, 테스트 PC 를 동원해서 전부 실행해 보고, 괜히 렉도 일으켜 보고 아예 그냥
키보드를 다다다다다 연타를 치며 내리쳐보기도 했습니다. 하지만 별 문제는 없었죠 :)
따라서 우리 내부에선 전혀 재현되지 않고 문제가 없다고 응답했지만 그 담당자는 계속
안하무인이었습니다. 정말 방법이 없더군요...

그래서 저는 꽁수를 하나 썼습니다. 기존 모듈과 똑같은 소스 상태에서 버전만 하나 올려서
리빌드를 하고 패치를 했습니다. 그리고 원인이 예상되는 부분을 찾아서 수정했다고
개 구라를 친 뒤 확인해 보라고 응답했습니다. 머 어쨌든 바이너리가 달라지니 클라이언트를
실행하면 모듈을 새로 받게 됩니다. 그리고 그 담당자에선 "아, 새 모듈을 다운받은 뒤 문제가
해결된 것 같네요!" 라는 회신이 왔습니다. ㅎㅎ 정말 캐 어이없죠 :)

담당자의 입장에서는 개발팀에서 무언가 처리해 주길 원하고, 개발팀 입장에서는 도무지
머 해줄게 없고... 그래서 그냥 뭔가 처리된 것처럼 가짜 패치를 하고 뭐. ㅅㅂ 뭡니까 이게.
마치 의사가 환자에게 가짜 약을 먹인 후 안심시키는 플라시보 효과와 다를 바 없는 행동
이라고 생각됩니다. 제대로 된 버그 리포트가 없어서 발생한 사건 중의 하나입니다.

따라서 에러 리포팅을 할 때의 자세는 아주 중요하다고 봅니다.
에러가 발생할 당시의 충분한 자료를 제공하는 것이 필요하죠. 확보할 수 있는건 다
확보해 보고, 또 여러 프로그램 끼리의 충돌 문제로 버그가 생길 수도 있는데 그럴 때는
프로그램의 실행 순서나 버튼을 누르는 순서까지도 매우 중요한 단서가 됩니다. 따라서
최대한 개발팀에서 참조할 수 있는 사소한 것이더라도 데이터 조각을 최대한
수집해 주는 것이 좋습니다.



"옆에서 엄마가 티비 채널을 MBC 로 바꾸니까 이렇게 화면이 일그러졌어요"
아무리 사소한 단서라지만 이런 사소한 단서는 쵸큼 ....


하지만 가장 큰 문제는 에러를 확보하기 힘든 상황에서의 버그를 처리하는 것입니다.
고객사와 연결이 되지 않는 유저들이나 데이터 제공을 거부하는 몇몇 소수의 유저들에게
발생하는 에러를 처리하기는 정말 힘들죠. 그럴 때는 여러 사람이 협력해야 합니다.
리포팅을 해오지 못한다고 무조건 운영팀을 탓하지 말고 자동 에러 리포팅 시스템 등
개발팀에서도 문제의 근거를 모을 수 있는 방법이 있거나 누군가 아이디어를 제공하면
그것은 추가 개발이 필요해도 또 그넘의 개발일정 탓 하지 마시고 개인 시간을 쪼개서라도
빨리 해줘야 된다고 봅니다.

이제 개발자의 이야기가 나왔으니 버그를 수정하는 자세에 대해 얘기를 해 볼까요. 

개발자의 행동도 매우 중요하다는 얘기를 드리고 싶습니다. 운영팀이나 테스트팀에서
충분한 버그 리포트를 전달해 주었는데도 그걸 고치는데 미적댄다거나
다음 릴리즈 버전에서도 지난 번에 잇슈가 된 버그와 유사한 버그가 또 자꾸
발생되거나 하는 사건이 발생하면 어쩌다 한두번 혹은 가끔 그런다면 이해할 수 있어도
계속 매번 그런다면(그리고 미안한 기색도 전혀 없다면) 그건 그냥 무능한 개발자라고
보아도 무방합니다.

자신이 개발한 모듈을 테스트하는 담당자가 있고 서비스하는 담당자도 있고
사용하며 즐기는 사람도 있는데 맨날 버그만 산더미처럼 만들고 리포팅을 해줘도
그걸 고칠 생각도 하지 않는다면 그것은 이 모든 사람들에 대한 모독 행위입니다.
(이런 리포팅을 다 해결하려면 추가 일정이 필요하거나 또는 개발 인력이 더 있어야
한다고 외치는 개발자가 있다면 그건 말기 암 증세)

그런 개발자의 기본 자세조차 되어 있지 않은 무책임한 개발자는 얼른 당장
지구를 떠나 줄 것을 요청드리는 바이며 주변의 동료들이나 관련 팀 담당자들은
그 훌륭한 개발자분이 정신을 차리도록 도와주시거나 아니면 지구를 빨리 떠날
수 있도록 다른 별을 알아봐 주시는 것이 프로젝트 성공에 더 큰 발판이 되리라
생각합니다.



window31. 2009년 4월.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/266 관련글 쓰기

  1. 사진찍는프로그래머의 생각

    2009/05/06 10:13
    삭제
    ㅇ ㅏ… 이 많은 반찬 기능 들 중에서 어느 것이 설사 버그 의 원인인지 똥색깔 증상 이라도 알려줘야 원인파악을 하죠 ㅠ ㅠ 디버깅의 어려움을 설명하는 이 멋진 은유

댓글을 달아주세요

  1. 2009/04/23 09:48
    댓글 주소 수정/삭제 댓글
    현상재현이 안되고 단서도 없으면 버그잡기 정말 어렵죠.. ㅎㅎ
    그런데... "이사람 뻥치는거 아냐?"라는 마음으로 코드를 볼때는 안보이던 버그가 "틀림없이 문제가 있다"라는 확신을 가지고 보면... 거짓말처럼 문제가 보이는 경우가 있습니다. 단서 제공도 중요하지만 그와 같은 정도로 중요한 것은 코드를 들여다 볼때 개발자의 마음가짐이란 얘기죠. ^^
    • 2009/04/24 12:40
      댓글 주소 수정/삭제
      맞는 말씀입니다. 개발자의 마음가짐도 정말 중요하죠 !!
      일껏 정보를 전달해 줫는데도 "이건 원래 이래요" 라고 하는 분들은 정말 ;;
  2. 2009/04/23 12:04
    댓글 주소 수정/삭제 댓글
    가끔 버그리포팅 + 재현 + 대안까지 제시를 해도 안하는 사람들도 있더군요
    고객달래야하지, 버그수정해달라고 닥달해야지, 답답할때가 많네요. ㅠㅠ
    • 2009/04/24 12:40
      댓글 주소 수정/삭제
      그런분은 지구를 떠나게 해야죠 ! %^
  3. 2009/04/23 15:58
    댓글 주소 수정/삭제 댓글
    ㅋㅋㅋㅋ

    오비이락인거죠 :)
    • 2009/04/24 12:41
      댓글 주소 수정/삭제
      하하하하 생각해보니 그런거 같네요 : )
  4. 2009/05/03 20:08
    댓글 주소 수정/삭제 댓글
    음식과 설사의 비유 정말 멋집니다.
    감동스러운 비유를 보고 가네요..
    저도 버그 때문에 사경을 헤메는 경우가 많은데
    개발자도 참 문제가 많다고 봅니다.
    자기 모듈은 절대 문제 없다고 고집 피우는 개발자들도 많거든요.
    보고 하는 사람이나, 개발자나 손발이 잘 맞아야 문제를 해결 할텐데..
    여튼 좋은 글 잘 보고 갑니다.
    • 2009/05/05 13:33
      댓글 주소 수정/삭제
      하하하하 그 부분을 발견해 주시다니 눈쌀미가 있으십니다 : )
      개발자들은 자기 모듈에 대해 마치 자신이 모욕당하는 듯한 강한 거부감을 느끼는 사람들이 많죠 ;
      오히려 진짜 고수분들은 안 그러는데 하수일수록 그러는거 같다는 ;
    • 2009/05/05 20:30
      댓글 주소 수정/삭제
      맞습니다.
      자기 모듈의 버그를 인정할 줄 모르는 개발자 보면 정말 답답하죠.
      제품이 누가 봐도 말이 안되는 동작을 하고 있는데, 이건 "개선"이지 "결함"이 아니라고 우깁니다. 결함이라고 하면 짜증내면서 안고쳐준다고 협박하고. ㅡ.ㅡ
      중요한 건 코드의 결함이냐 스펙의 결함이냐의 차이일 뿐이지, 고객이 봤을때 결함이면 결함이라는 거죠. 개발자가 "결함"이 아닌 다른 미화된 표현을 쓴다고 해서 결함이 다른 걸로 바뀌지는 않으니까요.

책으로 소개된 내 블로그




뎅꽁이의 보안창고로 유명한 후미후 님께서 알려주셨는데요,
IT 시큐리티 라는 이번 신간에서 제 블로그가 소개되었다고 합니다. :)

아래 디카로 찍은 사진과 이 포스트의 제목은 후미후 님 블로그에서 불펌 했습니다 :p







사용자 삽입 이미지


저자 강은성 상무님은 예전에 안랩에 계실때 세미나 들었던 기억이 나는데
이젠 SK 에 계시는군요. 아... 그분 같은 고렙께서 제 블로그에 들어오셔서 보신다고 생각하니
앞으로 ㅅㅂ 같은 표현은 좀 자제해야겠다는 생각이 드네요 :$

암튼 좋은 책에 별거 아닌 제 블로그를 소개해 주셔서 감사드리며
책 내용을 아직 직접 보진 않았는데, 집필하신 의도대로 어려운 해킹/보안 개념을 쉽고 친근하게
다가갈 수 있는 서적의 하나로써 잘 자리매김 했으면 좋겠습니다 ^^

 

window31. 2009년 4월.
Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/265 관련글 쓰기

댓글을 달아주세요

  1. 2009/04/20 20:30
    댓글 주소 수정/삭제 댓글
    오오오오~~ 축하축하~~ㅋㅋ
    날잡아서 한턱쏴주세용 *-_-*
    • 2009/04/23 02:18
      댓글 주소 수정/삭제
      니가 좀 사고 ;
    • 하루
      2009/04/23 09:27
      댓글 주소 수정/삭제
      그러니까 쫌 사고!!

블로그에서 돌아가는 음악 파일 가져오기




음악이 흘러나오는 블로그가 많습니다. 그런데 아쉽게도 "다른 이름으로 저장" 같은 기능이
없는 관계로 그 음악을 듣고 싶으면 꼭 그 블로그에 방문해야만 합니다. mp3 player 등에
넣은 후 들으면서 다니고 싶어도 그럴수가 없습니다. 좋은 방법이 없을까요?

블로그에 접속한 뒤 울려퍼지는 노래는 사실은 내 컴퓨터 어딘가에 저장되어 있습니다.
파일로 저장되어 있겠죠, 그리고 블로그는 인터넷 익스플로러 프로세스입니다. 자 여기까지
보았으면 무언가 감이 빡 오지 않나요? 파일이라면 handle 이 있을겁니다 !
즉, iexplore.exe 의 handle list 를 구하고, 음악 파일 확장자를 찾아본다면
음악 파일이 어디있는지 알 수 있겠죠, 그것을 나의 폴더로 복사하기만 하면 됩니다.

한번 구현해 볼까요 :)

먼저 iexplorer.exe 의 pid 를 구합니다. 인터넷 익스플로러를 여러 개 띄워놓을 수도 있으니
벡터를 썼습니다.


핸들 리스트를 구하기 위해서는 ntdll 의 api 가 필요한데요, 우리가 써야 할 것은
ZwQuerySystemInformation, ZwQueryObject, ZwClose 입니다.

그리고 몇가지 undocument 구조체가 필요합니다 (아, 더이상 undocument 가 아니죠 ㅎㅎ)
얘네들을 선언해놓을 필요가 있습니다 (인터넷을 잘 찾으면 널려 있습니다)

SYSTEM_HANDLE_INFORMATION,
OBJECT_BASIC_INFORMATION,
OBJECT_TYPE_INFORMATION,
OBJECT_NAME_INFORMATION 등입니다.


이제 갑니다. ZwQuerySystemInformation() 을 사용합니다. 첫번째 인자로 
SystemHandleInformation 을 준다는게 요점입니다.



그런데 사실 한 프로세스에 handle 은 엄청나게 많겠죠. 그중에서 우리가 필요한건
file handle 입니다. 따라서 그것만 추려내면 됩니다. 그 속성은 OB_TYPE_DEVICE 로,
OS 마다 값이 다르므로 판별할 필요가 있습니다. 아래는 셋팅 코드입니다. XP에서만
돌아가게 만들거면 강제로 0x1C 로 집어 넣으세요 ㅎ




자 이제 한번 핸들 갯수만큼 루프문을 돌아 볼까요~
고고씽!


Object Type 은 File , Mutant, Event 머 이런걸 가리키는 겁니다.
우리는 당연히 File 만 가져옵니다.
그리고 ZwQueryObject() 를 돌면서 ObjectNameInformation 를 가져옵니다. 이제 수많은
파일 핸들 리스트가 쭈욱 뽑힐겁니다.

근데 경로가.... \Device\HarddiskVolume1\Documents and Settings\.... 이딴식으로
나옵니다. C:\Document and Setting\ 이런식으로 나오면 아주 편할텐데 말이죠...
윈도우즈가 깔린 드라이브를 구해주는 API 아시는 분 혹시 있나요...;
전 무식해서 이렇게 구했습니다.

1. GetWindowsDirectory() 로 C:\WINDOWS 같은걸 구한다.
2. \ 이후의 WINDOWS를 짤라버린다.
3. C:\ 만 남는다.



그것 조차 귀찮으신 분은 이 플그램을 쓰는 모든 유저는 C:\ 에 윈도우즈를 깔아야만 한다 라고
가정하신후 C:\ 로 하드코딩하세요 ㅋㅋ 뭐 돈받고 팔아먹을 플그램도 아닌데요 :)
(아 이런 마인드 진짜 좋지 않습니다 ㅠ ㅠ)

자, 파일의 풀패스가 pOni->Name.Buffer 에 유니코드로 들어옵니다.
음악 파일인지 비교하시고 맞다면 로그 한방 찍어주고~



자 이제 복사하면 끝이죠.

 


실제로 만들어보니 아주 잘 돌아갑니다.
우우우우우우웁스 0.001 입니다.


사용자 삽입 이미지


실제로 이런식의 구현은 어디 남의 서버에 침투해서 파일을 빼오는게 아니고
그냥 자기 PC 의 어딘가에 숨어있는 파일을 내가 아는 폴더로 복사하는 것 뿐입니다.
따라서 해킹툴 제작과는 전혀 상관없음을 말씀드립니다..

학습/연구 목적이므로 툴과 풀 소스는 따로 베포하지 않습니다.
단지 file handle 을 이런식으로 가지고 놀 수 있다는 것을 보여주기 위해 포스팅했습니다.
쉬운 예를 들기 위하여 블로그에서 음악 파일을 가져오는 것에 비유해 보았고요

file handle, 파고들어보면 재미있는 내용이 많습니다 :)





window31. 2009년 4월





ps
당연히 플래시 파일인 swf 도 가져올 수 있겠죠 :)

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/261 관련글 쓰기

댓글을 달아주세요

  1. ks
    2009/04/18 23:00
    댓글 주소 수정/삭제 댓글
    더 쉽게 할 수도 있는... 파폭에 DownThemAll이라는 플러그인이 있어서 다운로드 할 수는 있네요...
    그런데 이건 ActiveX가 재생하는 것까지 가능한가요?
    • 2009/04/19 16:27
      댓글 주소 수정/삭제
      아마도 스트리밍 방식의 ActiveX가 아니면 거의 다 받아질 것으로 보입니다. (표준 Wininet API 역시 기본값으로 캐시를 사용하고 있으니...)
    • 2009/04/19 22:05
      댓글 주소 수정/삭제
      핸들만 구할수있으면 다됩니다 : )
  2. 2009/04/19 16:24
    댓글 주소 수정/삭제 댓글
    프로그램 내용과는 상관 없지만... 나루토를 즐겨 보시는 것 같군요...^^;; (저도 개인적으로 재미있고 보고 있는 애니메이션입니다.) :)
    • 2009/04/19 16:30
      댓글 주소 수정/삭제
      그나저나... \\Device\\HarddiskVolume1\\... 를 DOS Logical Drive 로 바꿔주는 API가 있는 것으로 알고 있는데...(아니면, 파일 매핑 객체 생성해서 파일 매핑 후 psapi.dll의 GetMappedFileName API를 쓰면 조금 더 이쁜 모양(?)이 나오죠...^^) 만일 상용화 or 배포하는 경우에는 그걸 쓰는 것이 훨씬 정확할 것 같네요...^^;;
    • 2009/04/19 16:32
      댓글 주소 수정/삭제
      그리고 Object Type Number 는 OS 에 따라 다른데, switch-case 로 버전 별로 넣어주어도 동작하지만, 전방 호환성을 유지하고 싶은 몇몇 프로그래머분들은 CreateFile() 등으로 NUL 파일의 핸들을 연 다음, 해당 핸들의 Object Type Number 를 추출하더라고요...^^;;
    • 2009/04/19 22:06
      댓글 주소 수정/삭제
      ㅎㅎ 나루토를 별로 즐겨보진 않지만 하다보니 나루토 이미지가 멋진게 많아서
      어케 자주 사용하게 되네요 : )
      위 좋은 정보는 감사 드려요 ! ^^
  3. 2009/04/19 20:11
    댓글 주소 수정/삭제 댓글
    옷~ 멋지군요. ;)
    핸들을 이렇게 사용할 수도 있네요. ㅎㅎ 좋은 글 잘 보고 갑니다. ^^
    (인터넷 임시 파일 디렉토리를 뒤져도 비슷한 일을 할 수 있을 것 같다는 예감이 드는군요. ㅎㅎ)
    • 2009/04/19 21:34
      댓글 주소 수정/삭제
      Find***UrlCacheEntry 라는 API가 있으니 어렵지 않게 구현할 수는 있겠죠...^^;;
    • 2009/04/19 22:07
      댓글 주소 수정/삭제
      아하 인터넷 템프 폴더를 뒤져도 되겠군요
      그게 훨씬 쉽겠네요 ㅋㅋㅋ
  4. justlive
    2009/04/20 16:00
    댓글 주소 수정/삭제 댓글
    카카시 선생 ㅜㅜ

    아이디어가 번쩍입니다. +_+

    좋은글 감사합니다.
    • 2009/04/20 19:00
      댓글 주소 수정/삭제
      하하 아이디어는 무슨 ;;
      그냥 꽁수에 불과한 거랍니다 : )
  5. ks
    2009/05/01 20:11
    댓글 주소 수정/삭제 댓글
    하다보니
    ZwQueryObject(hObj, ObjectNameInformation, ObjName, nObjectName, n)
    이 부분에서 몇 번 제대로 돌다가 그 이후로 이 함수 안에서 빠져나오질 않습니다... 왜 그러지...
  6. ks
    2009/05/02 01:14
    댓글 주소 수정/삭제 댓글
    0FA9168C 6A 64 push 64h
    0FA9168E FF 15 AC 14 A9 0F call dword ptr ds:[0FA914ACh]
    0FA91694 80 0D 76 D0 C0 0F 04 or byte ptr ds:[0FC0D076h],4
    0FA9169B EB EF jmp 0FA9168C

    이부분에서 무한루프 ㄱ-;;;
  7. 2009/05/10 20:43
    댓글 주소 수정/삭제 댓글
    비밀댓글 입니다
  8. 2009/05/15 11:03
    댓글 주소 수정/삭제 댓글
    비밀댓글 입니다
  9. justlive
    2009/05/16 01:07
    댓글 주소 수정/삭제 댓글
    PSYSTEM_HANDLE_INFORMATION aHandles = (PSYSTEM_HANDLE_INFORMATION)(pULONG + 1);
    ->
    PSYSTEM_HANDLE_TABLE_ENTRY_INFO aHandles = (PSYSTEM_HANDLE_TABLE_ENTRY_INFO)(pULONG + 1);

    이건것 같아욤..
  10. 2009/06/15 11:30
    댓글 주소 수정/삭제 댓글
    좋은 글 잘 보았습니다.
    시스템 볼륨 얻을때 ShGetFolderPath 를 이용하시면 좋을 것 같네요.
    http://msdn.microsoft.com/ko-kr/library/bb762181(en-us,VS.85).aspx

XP/S2K3/Vista/Win7 bugs help malware to survive 번역자료






이번 코드게이트 2009때 Kris Kaspersky 가 XP/S2K3/Vista/Win7 bugs help malware to survive
에 대해 발표한 PPT 자료를 제멋대로 각색한 글입니다. 원문 내용을 그대로 옮긴 것도 있고 제
맘대로 부연설명을 덧붙힌 것도 많습니다(번역이라기보다 거의 새로 썼다는게 맞을듯 ;; 하지만
저작권은 제가 아니고 Kris 에게 있습니다 :) ) 통역이 중간에 끊긴 탓에 발표내용은 거의 알아들을
수 없었고, 또 PPT 자료만으로도 내용을 완전히 받아들이기 힘들 거 같아 제 나름대로 삽질을
해본 후에 한번 작성해봤습니다. 

Kris 가  발표후에 소스는 공개하지 않았기에, 발표자료를 보면서 한번 대충 이런거겠지 하는
마음으로 만들어본 풀 소스코드도 함께 첨부합니다. 변수명이나 뭐 그런것들은 가급적 PPT 에
나온 코드와 동일하게 만들려고 꾸며봤습니다만 워낙 ㄱㅈ 같은 코드라서 좀 보시기 역할수도
있는데요 :) 쵸큼 이해해 주시고요 :p

원하는 대로 마음껏 퍼가도 상관없습니다.
이 자료를 보시는 분들에게 쵸큼이라도 도움이 되길 바라며.


window31. 2009년 4월.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/257 관련글 쓰기

  1. 코드게이트2009 카스퍼스키 발표 자료 번역

    2009/04/13 23:52
    삭제
    강병탁 님께서 자료를 해석해서 크리스 카스퍼스키 발표 한글판을 새로 만들어주셨네요. 아래는 원 출처입니다. XP/S2K3/Vista/Win7 bugs help malware to survive 번역자료

댓글을 달아주세요

  1. Sun2Day
    2009/04/13 21:42
    댓글 주소 수정/삭제 댓글
    자료 감사합니다 ㅇ_ㅇ//
    • 2009/04/14 17:46
      댓글 주소 수정/삭제
      네 감사합니다 ^^
  2. 2009/04/13 23:40
    댓글 주소 수정/삭제 댓글
    오.. 못 알아들어서 아주 죽을 맛이었는데 자료 잘 만드셨네요..
    감사합니다!
    • 2009/04/14 17:46
      댓글 주소 수정/삭제
      어익후 감사합니다 ! 저도 못 알아들었습니다 ㅎ
  3. 2009/04/14 05:11
    댓글 주소 수정/삭제 댓글
    흥미롭네요.

    전 말웨어 리서치는 안해서 잘 모르지만, 첫번째에 dll없는 인젝션은 일부 보안 제품들에서 사용중입니다. 저희 제품에도 사용중이거든요. 물론 dll 방식에 비해서 한없는 삽질이 필요하죠. 제가 개발한 것은 아니고, 하여튼 어셈블리의 구루분께서 개발해 놓으셨는데...

    저기에 나온 방식 외에도 쓰레기 데이타를 잔뜩 집어 넣어 놓는 짓도 하더군요 종종. 인스트럭션으로 해석이 안되는 그 부분은 신기하게도 그냥 아무 처리도 안하고 valid한 인스트럭션으로 넘어 가서 실행된다는... windbg에서 보면 쓰레기 코드로 보이죠.
    • 2009/04/14 17:55
      댓글 주소 수정/삭제
      그렇군요 ! 저런식으로 코딩하려면 어셈을 좀 많이 알아야 하긴 하죠 ㅎㅎ
      제가 만든거야 워낙 단순한거니...;
      근데 보안 모듈이 저런 행위를 한다니,, 저런 부분을 스캔하는 또다른 보안 모듈도 있을텐데
      (저희도 만드는 중입니다)
      한번 충돌 잇슈가 없는지 살펴봐야겠네요.
      mat 님께는 항상 좋은 정보를 많이 얻어가게 되는 것 같습니다. 감사드립니다 !!
  4. 2009/04/14 09:05
    댓글 주소 수정/삭제 댓글
    좋은 자료 감사합니다!!
    • 2009/04/14 17:51
      댓글 주소 수정/삭제
      네 별말씀을요 ㅎㅎ
  5. bluegene
    2009/04/14 10:38
    댓글 주소 수정/삭제 댓글
    재미있게 봤습니다. 감사합니다 ^^

    코드에서 한가지 궁금한게 있는데요...
    혹시 TLSEx/main 함수에서 아래 call ds:fnTLSExDll 부분은 없어도
    되는 코드가 맞나요? 제가 이해한대로라면 DLL 의 EP 를 바꾸는
    부분에서 써지니까 굳이 쓰지 않아도 되는 부분인가 해서요..
    관심만 갖는 분야라 정확히 알지 몰라서 여쭙습니다 ^^;;;
    • 2009/04/14 17:52
      댓글 주소 수정/삭제
      TLSEx()를 사용한 이유는 DLL을 EXE의 Import 테이블에 붙게 하기 위한 목적입니다.
      그래야 DllMain()이 호출되니까요 : )
      만약 TLSEx 호출 코드가 없다면 DLL 자체가 붙지 않겠죠
  6. 2009/04/14 10:48
    댓글 주소 수정/삭제 댓글
    오오오~~!! 잘 볼게요~ㅋ
    • 2009/04/14 17:52
      댓글 주소 수정/삭제
      잘 보기전에 밥을 사고!
  7. 2009/04/14 11:07
    댓글 주소 수정/삭제 댓글
    좋은글 감사합니다. 잘 봤어요~
    • 2009/04/14 17:52
      댓글 주소 수정/삭제
      링크까지 달아주시니 감사합니다 (__)
  8. 2009/04/14 12:41
    댓글 주소 수정/삭제 댓글
    와~ 멋져요.
    선리플 후 감상~~
    • 2009/04/14 17:53
      댓글 주소 수정/삭제
      ㅎㅎ 선감상 후 악플이 아니라 다행이예요
  9. 2009/04/14 13:14
    댓글 주소 수정/삭제 댓글
    간지... ㅋㅋ~
    감상후 리플 ^^;;

    재미난 방법이 많이 있네용...
    고생하셨어열... 히히~~ @.@
    • 2009/04/14 17:53
      댓글 주소 수정/삭제
      ㅋㅋ 감사 맛잇는거 좀 사줘요ㅕ
  10. 2009/04/14 13:19
    댓글 주소 수정/삭제 댓글
    somma님 죄송합니다. 선감상 후리플을 했습니다.
    • 2009/04/14 17:53
      댓글 주소 수정/삭제
      오우.. 헐랭이님께서 친히 댓글을...
  11. darkhi
    2009/04/14 16:15
    댓글 주소 수정/삭제 댓글
    잘봤습니다.
    이러한 번역 자료들이 많이 많이 나왔으면 좋겠네요. 헤헤...
    • 2009/04/14 17:54
      댓글 주소 수정/삭제
      저보다 더 잘하시는 분들이 만들어놓으신 번역 자료들 참 많이 있습니다 ^^
  12. 2009/04/15 01:14
    댓글 주소 수정/삭제 댓글
    잘 봤습니다.
    좋은 자료 감사합니다. :D..
    • 2009/04/17 16:47
      댓글 주소 수정/삭제
      네 잘 봐주셨다니 감사합니다 : )
  13. 2009/04/18 23:04
    댓글 주소 수정/삭제 댓글
    오오.. 대단하십니다.
    • 2009/04/23 02:19
      댓글 주소 수정/삭제
      딱히 대단한 건 없어요 ㅎㅎ;;
  14. 2009/04/19 16:36
    댓글 주소 수정/삭제 댓글
    좋은 자료 감사합니다... *^^*

    그런데, 첫 장부터 제가 DllGuard 구현할 때 방어하기 위해 직접 구현했던 기법들이 써져있네요... lol
    • 2009/04/20 19:01
      댓글 주소 수정/삭제
      엇~ 그러고 보니 그러네요 ㅋㅋ
      Kris 에게 vbdream 님 블로그를 좀 알려줘야 할듯 : )
  15. ZIZI
    2009/04/20 17:14
    댓글 주소 수정/삭제 댓글
    오우~ 잘 보겠습니다. 훌륭한 일을 하시는군요..^^b
    • 2009/04/20 19:01
      댓글 주소 수정/삭제
      그냥 주말에 할일이 없어서요 ㅎ
  16. dokd0
    2009/04/21 11:49
    댓글 주소 수정/삭제 댓글
    좋은자료 감사합니다 ^^*
    • 2009/04/23 02:18
      댓글 주소 수정/삭제
      네 감사합니다 ^^
  17. 2009/04/21 19:01
    댓글 주소 수정/삭제 댓글
    뒤늦게 보게 되었습니다 좋은자료 잘 보겠습니다^^
    • 2009/04/23 02:19
      댓글 주소 수정/삭제
      하하 감사합니다.
  18. pdpdds
    2009/04/30 18:46
    댓글 주소 수정/삭제 댓글
    카스퍼스키가 설명할 때 통역등의 문제로 전혀 이해가 되지 않았고 문서자체만으로도 이해가 힘들었는데 님께서 만든 자료를 보고 많은 의문점이 풀렸습니다. 제가 댓글은 잘 안다는 편인데 이렇게 글로써 감사함을 전하고 싶습니다. 앞으로 하시는 일 잘되길 바라겠습니다.~
    • 2009/05/05 13:31
      댓글 주소 수정/삭제
      좋은 말씀 감사합니다 ! 도움이 되셨다니 저도 기쁘네요 : )
  19. Oh~!!
    2009/05/04 17:28
    댓글 주소 수정/삭제 댓글
    잘보겠습니다.
    • 2009/05/05 13:31
      댓글 주소 수정/삭제
      감사합니다 ^^
  20. VHD
    2009/07/13 18:19
    댓글 주소 수정/삭제 댓글
    좋은 자료 감사합니다....^^

CodeGate 2009 후기

2009/04/09 11:20

CodeGate 2009 후기




사용자 삽입 이미지



코드게이트 2009 다녀왔습니다.
모든 세션을 다 못본지라... 본것만 간단히 후기만 작성해 보겠습니다.

일단 세션 소개... (except of 시상식)

session 1
Embedded Systems Security - Ryan Clarke (美 UAT 대학 교수)
Reverse Engineering made easier (Binary static Analysis) - Alex Radocea (美 RPJ)
The Current Realities of Cyber Warfare and Cyber Espionage - Eli Jellenc(美 iDefense)
XP/S2K3/Vista/Win7 bugs help malware to survive - Kris Kaspersky (McAfee)

session 2
사이버 보안 국제 표준화 동향 - 염흥열 (순천향대 교수)
Online Game Security (Overview & Game BOT Detection) - 김휘강 (NCSoft 보안실장)
Current Issue of the security and Information management - 임종인 (고려대 교수)
인증서 보안 - 김우현 (서강대)

http://www.codegate.org/Front/Conference/?CodeFlag=0001

제가 본건 Kris Kaspersky 의 XP/S2K3/Vista/Win7 bugs help malware to survive 와
김휘강 실장님의 Online Game Security (Overview & Game BOT Detection) 였습니다.
다른것도 관심이 있는것이 있었지만, 세션이 겹쳐서 못 들었거나 아님 밖에서 노느라
못 들었거나 뭐 그런 거 같네요 :)  따라서 그 두개만 후기를 작성해 보겠습니다.

Online Game Security (Overview & Game BOT Detection)
- 김휘강 (NCSoft 보안실장)

저는 김휘강 실장님의 강연을 매우 좋아합니다. 이미 보안계의 거장이라는 사실은
제쳐두고서라도 정말 이분은 정말 국내에 몇 안되는 글쟁이 연설쟁이 입니다. 이분은 항상
페이스를 놓치지 않는 그 발표 태도가 정말 존경스러운 것 같습니다. 보통은 발표에 몰입하게
되면 흥분도 하게되고 속도도 빨라지게 되는데, 이분은 언제 어디서 어떤 내용을 풀어주시던
간에 흥분하시는 일이 없고 항상 적당한 간격을 유지하는 진행능력이 참 대단하다고
생각합니다. 그리고 원론적인 내용이나 일반적인 상식들도 지겹지 않게 각종 잇슈를 잘
풀어헤쳐주시는 스타일이라고 생각됩니다.

이번 발표는, 말 그대로 Overview. 좀더 나아가서는 게임회사의 보안 담당자들이
어떤 일을 하고 있는지 총괄 정리한 내용으로 생각해도 좋을 것 같습니다. 깊숙히 들어가지
않은 부분도 있지만 웬만한 몸통이나 굵은 가지는 다 다룬 것 같네요. 특히나 마음에 들었던
것이 바로 그 분류 방법입니다. 게임 보안이라는 분야... 보안 업계에서도 약간 희귀성과
특이성을 가진 이 분야에 있어 사실 저는 지금까지의 분류방법이 너무도 맘에 들지 않았습니다.

왜냐하면, 너무 엿장수 마음대로 였거든요. 게임에서 계정 해킹을 막는 것만을 게임 보안이라고
하질 않나, 게임 보안솔루션만을 게임 보안이라고 하질 않나, 아니면 게임회사에서 그냥
일반적인 보안하는 사람들도 게임보안 한다고 하질 않나 등등 신문기사에 다루어진 내용이나,
아님 좀 안다는 사람들이 풀어헤친 칼럼을 봐도 그 개념이 정말 중구난방입니다. 솔직히 화가 날
정도로 니들 마음대로 분류했다고 생각합니다.

하지만 이번 김휘강 실장의 강연은 게임보안을 3가지로 분류했습니다.

-Information security for online game publisher and studios information assets
  (servers, network, DB and applications)
-Security process or systems for online game users
-Security process or systems for online game client and server programs

첫번째 내용은 굳이 게임회사 아니더라도 인터넷 서비스나 온라인 서비스 등을 하고
있는 회사라면 어디든 해당되는 공통되는 사항입니다. 그리고 두번째는 게임 유저들을
위한 보안, 키보드 보안 솔루션을 설치해준다거나 OTP를 제공하는 등 역시 게임회사의
특징일 수도 있겠지만, 은행이나 포털 등도 같은 범주에 들어가기도 하는 내용입니다. 그리고
세번째는 게임만의 특징이겠죠. 서버와 클라이언트에 해킹 방지를 위한 시큐리티 코드를 넣는
작업을 말합니다. 정말 딱 부러지는 분류네요 :)

이런 분류를 통해 타 보안 영역과 겹치는 내용, 그리고 게임 쪽에 특화된 내용을 나누어서
다룸으로써 개념에 대한 항목을 명확하게 한 것 같아서 아주 좋았습니다. 나중에 누가
게임보안에 대해 물어보면 저걸 긁어주고 싶네요. 어쨌든 각 항목에 대한 기본적인 상식에서
부터 좀더 실제사례까지 들어가면서 필요한 보안 처리들이나 왜 해커들이 이쪽을 공격하는지
단계별로 서술, 그리고 대응해야 될 방법에 대해 설명이 이루어졌습니다. DOS등의 IDC 공격,
직원 PC 공격, OTP 사례나 BOT, 사설서버를 차단하는 대응노하우 등이 부가적인 내용으로
꾸며졌던 것 같습니다. 아주 크리티컬하고 상세한 기술 노하우 등이 공개되진 않았지만,
게임회사의 보안담당자들이 어떤 일을 어떻게 하고 있는지 그리고 게임 보안 업무에서
전반적으로 다루고 있는 것들을 종합적으로 잘 정리한 내용이었다고 생각됩니다.

저도 회사 업무로 사설서버 차단 기능을 계속 개발하고 있는 관계로, 개인적으로는 사설서버를
차단하는 방법이 발표내용 중에 가장 흥미를 끌었습니다만 역시 어느 회사나 사설서버 차단
알고리즘은 발표내용 시에 언급했던 대로 top secret 에 속하는 지라, 아주 획기적인 내용이
공개되진 않았지만(뭐 워낙 이쪽에 정석적인 대책이 없다보니) 그래도 기본적인 내용과 힌트,
혹은 뉴 아이디어 같은 내용이 다루어지면서 재미있는 발상과 새로운 몇가지를 얻어낼 수 있어
개인적으로는 아주 좋았습니다.


XP/S2K3/Vista/Win7 bugs help malware to survive
- Kris Kaspersky (McAfee)

Reverse Engineering 으로 유명한 Kris Kaspersky 의 malware 발표 입니다.
러시아 사람이고 지금은 맥아피에서 일하고 있으며, 수많은 보안서적을 집필했으나
영어로 번역된것은(=우리나라에 알려진 것은) 6종 정도 라고 하네요.
아마 아래 3권 정도는 웬만하신 분들은 다 한번쯤 들어보신 책일겁니다.
(나머지 3권은 저도 뭔지 모르겠네요 :p )

Hacker Debugging Uncovered
Hacker Disassembling Uncovered
Shellcoder's Programming Uncovered

주제는 각 플랫폼 버그가 악성코드를 활개치게 하는데 영향을 준다는 것이었지만
실제로 제가 체감하기에는 제목과는 느낌이 좀 달랐습니다. 크게 두 가지를 다루었다고 할까요.
첫번째는 CreateRemoteThread 로 DLL 없이 코드만 풀어넣은 스레드 넘들을 감지하는 방법
그리고 두번째는 Entry Point 를 속이는 기법입니다. 즉 TLS Callback 의 시뮬레이트라고나
할까요. 암튼 흥미로운 방법이었습니다.

그런데 통역이.....으 전 처음에 러시아어로 말하는 줄 알았는데 알고보니 이게 러시어가 아니고
러시아 발음이 지독하게 섞인 영어더라고요 -_- 그리고 카스퍼스키의 말하는 속도가 장난이
아니었습니다. 당연히 통역자는 전혀 따라가지 못했고요, 중간에 진행자가 5분 간격으로 두번이나
무대로 올라와서 귓속말로 "slow down...ㅜㅜ" 를 외쳤으나 한 1~2분 말이 느려졌을 뿐, 다시
다다다다다다~ 달리는 바람에 통역자가 한 20분 통역했나? (그 20분중 내용의 20%도 전달되지
못했음) 그 후부터는 통역자가 포기하는 바람에, 후반 40여분은 그냥 통역 없이 청중들은
얼빵한 표정으로 카스퍼스키의 기관포 연설을 멍하니 들을 수밖에 없었죠 :)

그리고 카스퍼스키의 발표가 2시간 예정이었는데, 당당히 1시간만 하고 끝낸 겁니다 ㅋ 진행자들은
캐당황했고요 얼른 무대로 올라가서 뭔가 샤바샤바 하더니 조금 더 하기로 했습니다 :p 근데
과정이 좀 웃겨요 그사람들의 귓속말 상황을 제가 당시 느낀 뉘앙스.

진행자 : "헉... 이렇게 일찍 끝내시면 어떡해요! 다른거라도 좀더 보여주세요"
카스퍼스키 : "별로 보여줄게 없는데여..."
진행자 : "그래도! 아직 1시간이나 남았어요!"
카스퍼스키 : "따로 또 준비한게 없어요."
진행자 : "아 그럼... 방금 했던거 통역이 제대로 안되서 그러니... 그거라도 한번 더 재탕
             해주세여...ㅠㅠ  통역은 이런식으로 합시다. 당신이 러시아어 섞인 영어로 말하면,
             그래도 그거라도 대충 알아들을 수 있는 Ryan Clarke (첫번째 발표자. 미국인)가 다시
             한번 깔끔한 영어로 말하고요 우리 한국인 여자 통역자가 그걸 다시 통역하는 방법으로"
카스퍼스키 : "뭐 그렇게 합시다"
진행자 "그럼 ㄱㄱㅆ"

그리고 진행자는 이렇게 말했습니다.
"아 통역이 말끔하지 못했으니 Ryan Clarke 가 통역을 도와주는 방법으로 30여분간 다시한번
중요한 부분만 짚어서 정리하도록 하겠습니다."

ㅎㅎ 그렇게 해서 20~30여분간 한번 더 재탕했죠... 재탕하면서 자료를 좀 보니 이제 뭔 내용인지
쵸큼 알겠더군요. 그런데 그 여자 통역분에게는 죄송한 소리지만 그냥 통역은 없어도 될듯...
실제로 발표자가 아무리 깔끔한 영어로 스피킹을 해도, 지금의 통역자 수준으로는 그걸 전혀
소화하지 못하는 것 같습니다. 예를 들면 이런 부분이 있었습니다.

카스퍼스키 : "지금 이 프로그램은 일단 콘솔로 만들었다. 하지만 뭐 필요하면 UI 로 만들수도 있다."

이런 내용은 발표의 알맹이와는 전혀 상관없이 그냥 발표자가 흘러가는 한마디로 한번씩 하는
말입니다. 하지만 통역자의 입장에선 뭔가 발표가의 말을 계속 전해야 되고, 다른 어려운 용어가
섞인 말은 대체 뭔지 모르겠고, 아 이번에 뭔가 들리는 단순한 내용이 나왔다. 그럼 이거라도
전달하자... 뭐 대략 이런 입장이기 때문에 들리는 그대로 통역합니다.
그래서 이런 문장이 되었습니다.

통역자 : "이 프로그램은 화면이 없습니다. 하지만 이미지가 있을 수도 있습니다."

직역이 아니고 그냥 순수하게 통역만을 하게 되는 것이죠. 그리고 중요한 문장은 넘어가고 저런
것들만 골라서 통역하게 되면, 듣는 사람이 관련 내용에 기반 지식이 없는 한 완전히 삼천포로
빠지는 얘기만 듣게 됩니다. 통역하시는 분들 힘드신건 알겠지만 교육 좀 받은 사람으로 썼으면
좋겠네요.

어쨌든 카스퍼스키의 발표는 좀 알아먹기 힘들었고요, 나중에 발표 자료를 보면서 대충 무슨
내용인지 쵸큼 눈치를 챌 정도였는데 입장시에 준 발표 데이터 CD 안에 카스퍼스키가 사용한 예제
코드와 뭐 그런것 까지 있었으면 좀더 쉽게 알 수 있었을텐데 그런 아쉬움이 남네요. 이번에
카스퍼스키가 한국에 온다고 해서 기대하시는 분들이 엄청 많았는데, 그래도 이런 기념비적인
발표이니 만큼, 대략 한번 제가 관련 자료를 한국어로 만들어서 기회가 되면 블로그에 올려
보겠습니다 (발표에 사용된 코드까지 한번 만들어 보겠습니다... 못하면 말구요 ㅋ )

마지막으로 여담이지만, 카스퍼스키도 사람이 좀 독특한, 재미있는 사람인 것 같습니다.
위트가 섞인 표현을 많이 쓰던데요 예를 들어보자면.

- Windows 는 항상 버그가 발생하는 OS 라는 얘기를 하면서
old joke : another day - another bug. some get fixed in a few weeks,
some live forever.

- 보이는 Entry point 가 전부가 아니라면서
darkness underneath the lamp-stand

- 악성코드가 EP 를 이런식으로 바꿔대는 짓을 해대면 안티바이러스 개발자는 이런걸 찾는
기능을 또 만들어야 하는 고통을 얘기하면서
AV developers are going to rewrite zillion lines of code...


그리고 Q/A 로는 이런 화면을 붙혔네요 ㅋ




겨우 두개의 후기만 썼는데 글이 엄청 길어졌네요 -_-;
제가 본게 이게 다라서 일단은 여기까지만 후기를 작성해보도록 하겠습니다 :)



window31. 2009년 4월

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/256 관련글 쓰기

  1. CODEGATE 2009, Kris Kaspersky episode

    2009/04/10 14:35
    삭제
    오늘 COEX Grand Ballroom에서 CODEGATE라는 행사가 열렸다. 그 중 마지막 주제인 'XP/S2K3/Vista/Win7 bugs help malware to survive'로 McAfee의 Kris Kaspersky가 와서 강연을 하였다. 오후 4시 15분이 되자 상당히 말라보이는 체구에 곱슬기가 넘치는 긴 머리카락을 한 그가 가슴에 꽃을 꼽고 등장했다. 세션이 시작되자마자 Kris Kaspersky는 특색있는 강한 러시아 억양의..

댓글을 달아주세요

  1. darkhi
    2009/04/09 12:48
    댓글 주소 수정/삭제 댓글
    후기 잘 봤습니다.
    김휘강님의 게임보안의 분류는 참 좋네요.
    게임보안이라는 용어에서 상당히 제한적인 느낌을 받아왔는데, 오히려 더 포괄적인 의미가 담겨 있다는 것을 이번에 새롭게 알게 됐습니다.
    또한 카스퍼스키의 발표자료 한글 번역은 기대해보겠습니다 ^^
    • 2009/04/10 17:01
      댓글 주소 수정/삭제
      네 누군가 저렇게 좀 정리를 해줬으면 하는 마음이 컸는데
      보고 뭔가 가슴이 뚫리는 듯 했습니다 : )
      번역자료는 주말동안 한번 만들어보겠습니다.
      이거 코드 만들기가 생각보다 많은 예측을 필요로 하네요 :p
  2. 2009/04/09 17:26
    댓글 주소 수정/삭제 댓글
    카스퍼스키가 종종 컨퍼런스에 와도 사람들이랑 애기 하는걸 꺼려 한다라는 말을 들었을 땐, 그의 겉모습을 보고, 고독을 즐기는 간지가이가 아닐까
    생각했는데, H.I.T.B때 말 잘하더군요. 러시아에서 온 사람들이랑만.
  3. 2009/04/10 18:29
    댓글 주소 수정/삭제 댓글
    오. 병탁님도 오셨었군요. 저도 갔었는데, 전화라도 해볼껄 그랬네요. ^^

    Dual님도 여기서 보니 방가워요~ ^^
    • 2009/04/13 10:59
      댓글 주소 수정/삭제
      아 우석대장님도 오셨었군요...
      음 그날 많은분들 뵙긴 했는데 왜 못 뵌거죠 ㅠ ㅠ
  4. 2009/04/11 10:58
    댓글 주소 수정/삭제 댓글
    세션을 못 들어서 후기를 찾아다녔는데 좋은 내용의 정리, 감사합니다.
    • 2009/04/13 11:00
      댓글 주소 수정/삭제
      네. 조금이라도 읽을만했는지 모르겠네요 ^^;

가상PC 감지



가상PC 감지
강병탁 / window31 (window31@empal.com / www.window31.com)


월간 마이크로소프트웨어 2009년 4월호
("Bypass AntiVirus" 2회 - 실시간 감시 취약점 中)


바이러스를 분석하기 위해 많은 보안 관계자들은 VMWare나 Virtual PC와 같은 가상 머신을 이용한다. 그런데 몇몇 멀웨어는 현재 자신이 실행된 환경이 가상 환경이라면 활동을 멈추고 즉시 자신을 파괴시킨다. 바이러스가 가상PC에서 로딩됐다는 것은 바이러스 분석가들이 악성코드 분석을 위해 실행했을 것이라고 판단하기 때문이다. 그리고 바이러스를 분석하는 입장에서도 바이너리를 리버스 엔지니어링 해 보기 전에 먼저 한 번 실행부터 시켜보는 것이 일반적이다. 때문에 이런 내부적인 상황을 모르고 가상PC에서 테스트하며 돌아가지 않는 바이러스가 발견된다면 분석을 중단하는 일도 발생한다. 이런 점을 노린 악성코드 제작자들의 의도는 상당히 지능적이라고 볼 수 있다. 따라서 안티바이러스 업무를 하는 사람은 가상PC가 아닌 전용 리얼 테스트 머신을 갖춰야 한다. 또한 악성코드가 가상PC를 어떻게 감지하는지에 대한 스캔 엔진도 별도로 장만하면 더욱 효율적이다. 예를 들어 <리스트 7>과 같은 코드가 있다. 이 코드는 현재 실행된 환경이 VMWare인지 감지한다.

<리스트 7> VMWare 감지 코드


인터넷의 해외 사이트를 잘 조사하다보면 많은 자료가 있으니 참고하면 좋을 것이다. 해커나 공격자도 우리와 같은 검색 능력을 가진 사람이라 결국 인터넷을 뒤져서 이와 같은 가상PC 감지 코드를 추가해 공격한다. 따라서 이런 유형의 코드를 검색하는 미니 스캔 툴을 개발, 가상PC에서 동작하지 않는 바이러스를 발견했을 때 그 파일에 대해 실행시켜 해당 바이러스가 가상 머신을 감지하는지 아닌지를 확인할 수 있다(패턴이 완전히 일치하지 않을 가능성이 있기에 100% 장담은 못하지만 확실히 도움은 된다). 더 나아가 해당 루틴을 찾아내면 그것을 걷어낸 후 가상PC에서 자유롭게 분석할 수도 있다. 또는 실시간 감시 기능을 무력화시키는 바이러스의 경우는 이런 행위를 할 가능성이 더욱 농후하다. 가상PC에서 바이러스 샘플을 실행한 후 돌아가지 않는 바이러스라고 쉽게 단언하지 않는 내공깊은 분석가가 더 많아졌으면 하는 바람이다.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/252 관련글 쓰기

댓글을 달아주세요

  1. 2009/04/05 19:20
    댓글 주소 수정/삭제 댓글
    위 코드는 "Identifying Malicious Code Through Reverse Engineering"(Springer, 2009) 라는 책에서 발췌한 코드이고요, 아쉽게도 VirtualPC 는 감지되지 않습니다 : )
  2. 2009/04/06 09:52
    댓글 주소 수정/삭제 댓글
    허헛..;; 그러고보니 벌써 4월인;;..
    =0= 얼릉 또.. 4월호 장만하러 달려가야겠군요;ㅋㅋㅋ
    아~ VirtualPC 감지하는 코드는 ?????????????? 에 잘 나와있더라구요~
    :D
    • 2009/04/06 10:16
      댓글 주소 수정/삭제
      복수하는거냐 -_-
      이 ????????? 같은넘...
  3. 2009/04/06 22:57
    댓글 주소 수정/삭제 댓글
    형~~ 기고한 것들 열심히 모으면서 애독자(?) 노릇하고있는데;;
    선물로~ =0= 4월호 하나 사주세용~~ :)
    • 2009/04/09 11:21
      댓글 주소 수정/삭제
      아래 영진사마한테 달라고 하면 되겟네 !
  4. 2009/04/07 16:23
    댓글 주소 수정/삭제 댓글
    HS // 담에 구로 놀러오세용. ㅋㅋㅋ ~
    어쩌다보니 4월호만 3권 받게된 ㅋㅋㅋ~~ @.@
    • 2009/04/09 10:29
      댓글 주소 수정/삭제
      저도 한권만요.. 굽신.. 굽신..

      공짜면 다 좋다는...
  5. 2009/04/07 21:15
    댓글 주소 수정/삭제 댓글
    비밀댓글 입니다
    • 2009/04/09 11:21
      댓글 주소 수정/삭제
      오우... 이런 !! 완전 축하해요 !!!
      대단하네요 ㅎㅎ
  6. 2009/04/08 08:26
    댓글 주소 수정/삭제 댓글
    그러고 보니, VIX(VMWare SDK) 사용해서 프로그램 샌드박싱할 때 타겟이 저 기능을 가지고 있으면 테스트도 무용지물이겠네요.

    그나저나 요즘 나오는 역공학 방지도구들도 대부분 저 기능 지원하더라구요. (실제 구현하려면 병탁님 같은 분의 도움을 받아야 겠죠? ^^)

    여담입니다만, VIX가 굉장히 강력해지고 있어요. ^_________^
    • 2009/04/09 11:23
      댓글 주소 수정/삭제
      네. 그래서 짱꿰이 사이트에서는 Anti-Anti-VMWare,
      Anti-Anti-SandBox 같은것도 있는것 같더라고요
      저도 짜집기 코드로만 가지고 있는데
      전용 스캔 머신으로 둔갑 시켜야죠 : ) 실력이 딸려서 못하고 있어요 ^6;
  7. 베리굳
    2009/04/14 20:44
    댓글 주소 수정/삭제 댓글
    만약에 저런 악성코드가 많다면 우리는 가상pc사용하면 되네염 그럼 악성코드도 지가 알아서 꺼져줄테고 편안한 컴퓨터사용 이 가능하네염
  8. 2009/09/02 16:44
    댓글 주소 수정/삭제 댓글
    좋은정보 감사합니다.
    질문이 있는데요,

    - mov ebx, 0
    - mov ecx, 10 // any value but not MAGIC VALUE

    부분과,
    - cmp ebx, 'VMXh'

    에서, ebx 값과 magic value 를 비교하는걸 볼 때,
    magic value 를 피해야하는건 ebx 아닌가요?

매크로 근절 캠페인




자동사냥, 매크로 프로그램을 근절시키기 위한 캠페인을 하네요.
오토를 베포하거나 판매하는 사이트가 있으면 아래 url 로 신고해주세요.
이런 정책적인 움직임들, 개인적으로 아주 좋은 모습이라 생각합니다.

아무런 정책 없이 오토 프로그램을 그냥 보안 프로그램으로만 막는 것은
무단횡단을 하는 사람들에게 무단횡단시 벌금을 먹이는 방법은 전혀 사용하지 않고
그냥 무단횡단을 못하게 벽만 자꾸 높히는 행위나 다를 바 없으니까요.

정정당당 오토 클린업
http://www.autoclean.or.kr/




사용자 삽입 이미지
Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/254 관련글 쓰기

  1. 매크로 근절 캠페인

    2009/04/01 20:53
    삭제
    오포 판매 사이트를 신고해주세요! 정정당당 오토 클린업 http://www.autoclean.or.kr/ PS: 잘되려나 의심이 되긴 하지만 절박하니 이렇게라도 하는 수밖에...

댓글을 달아주세요

BLOG main image
by window31

카테고리

분류 전체보기 (256)
Reverse Engineering (21)
C, C++ (20)
Kernel (8)
Guitar (18)
잡담 (70)
etc (5)
who am i (8)
보안 이야기 (75)
Tools (3)
월간 마이크로소프트웨어/.. (27)

글 보관함