Network Programming Tip #1 - timeout, resolv


// select를 이용한 타임아웃 설정.
int timeout(int sock, int secs) {
    struct  timeval tout;
    fd_set  fd_read;

    tout.tv_sec  = secs;
    tout.tv_usec = 0;
    FD_ZERO(&fd_read);
    FD_SET(sock, &fd_read);
    if(select(sock + 1, &fd_read, NULL, NULL, &tout)
      <= 0) return(-1);
    return(0);
}


// WSASocket 기반으로 작성할 경우 WSAOVERLAPPED를 이용하여 이벤트 기반으로 Timeout을 설정할 수 있다.
// 아래는 설정의 한 예
  int ret=WSARecv(Sock,&RecvBuf,1,&nRead,&Flag,&RecvOverlapped,NULL);

  if(ret==SOCKET_ERROR && (WSA_IO_PENDING!=WSAGetLastError()))
  {
     cout<<"Error when receiving"<<endl;
     return SOCKET_ERROR;
  }
  ret=WSAWaitForMultipleEvents(1,&RecvOverlapped.hEvent,TRUE,timeOut,TRUE);

  if(WAIT_FAILED==ret)
  {
     cout<<"wait failed"<<endl;
     return SOCKET_ERROR;
  }



// 호스트이름에 대한 resolve가 필요할 때 아래 함수를 쓰면 끝.

u32 resolv(char *host) {
    struct  hostent *hp;
    u32     host_ip;

    host_ip = inet_addr(host);
    if(host_ip == INADDR_NONE) {
        hp = gethostbyname(host);
        if(!hp) {
            printf("\nError: Unable to resolv hostname (%s)\n", host);
            exit(1);
        } else host_ip = *(u32 *)hp->h_addr;
    }
    return(host_ip);
}


// 혹시 이 포스트를 보시면서 좀 더 나은 형태의 TIMEOUT 방법을 아시는 분은 공유좀... ^^;;

by fullc0de | 2008/08/01 11:55 | Programming | 트랙백 | 덧글(2)

파이어폭스에서 DoS 이슈가 하나 나왔네요.

파이어폭스 3에서 브라우저를 강제로 종료 시켜버리는 이슈가 나왔다고 합니다. 모질라 보안 블로그를 통해 30일날 발표했는데요. 구체적인 내용은 아직 없네요.

Low Risk Denial of Service in Firefox


content layout conponent에서 NULL 포인터 역참조(dereference)가 문제의 핵심인 듯 합니다.


이글루스 가든 - professional secur...

by fullc0de | 2008/08/01 11:22 | 보안 | 트랙백 | 덧글(0)

ubuntu 사용 기록

* 테스트용으로 ubuntu 7.04 server 버전 설치
  - ubuntu는 기본적으로 UTF-8을 사용하기 때문에 모든 문자셋을 UTF-8으로 맞춤.
  - 사용자 profile파일에 다음과 같이 기록
      LANG=ko_KR.UTF-8
      LC_ALL=ko_KR.UTF-8
      LANGUAGE=ko_KR.UTF-8
  - sudo apt-get update를 통해 패키지 리스트 업데이트
  - sudo apt-get build-essential 을 통해 C 개발 환경 구축
  - vim-full 버전으로 다시 설치 한 후 문자셋을 위해 vimrc에 다음과 같이 기록.
      set enc=utf-8
  - 원격에서 ssh로 접속하기 위해 openssh 설치
      sudo apt-get install openssh-server
  - putty에서 원활한 한글 사용을 위해 문자셋을 UTF-8으로 변경

*추가사항이 있을 시 계속 작성..

by fullc0de | 2008/07/29 14:53 | 개인메모 | 트랙백 | 덧글(0)

악성코드 분석에 도움이 될만한 도구 - oSpy

얼마전에 WebSense사의 블로그를 통해 oSpy라는 프로그램이 소개된 적이 있습니다. 제가 간단하게 사용해봤는데 첫 느낌은 괜찮네요. Step by Step 사용법은 WebSense사의 블로그프로그램 공식 페이지에 가시면 확인하실 수 있습니다. Advanced한 사용까지는 아니더라도 간단한 모니터링 기능은 직관적으로 사용할 수 있네요. 특히 IDA와 연동하는 부분이 상당히 인상적입니다.

프로그램이 약간 불안한 부분이 있긴한데... 모니터링 기능은 쓸만합니다.

API후킹기법을 사용해서 악성코드가 특정 행위(예. send, recv등)를 할 때 내부적으로 함수 리턴되는 위치를 알려줌으로써 분석을 쉽게 도와주는 부분이 맘에 드네요.

관심있으신 분은 한번 받아서 써 보시기 바랍니다.






이글루스 가든 - professional secur...

by fullc0de | 2008/07/28 16:19 | 보안 | 트랙백 | 덧글(5)

파이어폭스 3 취약점 공식 발표와 그 뒷 이야기...

일전에 파이어폭스 3.0에서 취약점이 발견됐다는 이야기를 한적이 있습니다. 그 때 아직 패치가 안나와서 어떤 문제인지 밝혀지지 않았다고 했는데요... 이번에 15일날 모질라에서 공식적으로 Advisory를 발표했습니다. 주요 쟁점은 CSS Object에 대한 reference counter 변수에 무쟈게 큰 수를 기록할 수만 있다면 브라우져가 Crash 되거나 잘 요리(?)하면 임의의 코드를 실행시킬 수 있다는 것입니다. 그리고 실제 이문제가 파이어폭스에만 국한된 것이 아니라 Thunderbird 2.0.0.6, SeaMonkey 1.1.11에서도 함께 발생한다고 되어 있습니다.

그런데 전 이 문제보다도 15일날 함께 발표된 "Command-line URLs launch multiple tabs when Firefox not running" 취약점이 더 관심이 가네요. 파이어폭스를 실행하지 않은 상태에서 Command-Line 으로 다중 탭을 띄울 때 "Standalone applications can run arbitrary code through the browser" 취약점을 부분적으로 재끼고 local disk에 있는 파일을 실행할 수 있다고 합니다. 저도 영어가 짧아서 확실하게 개념이 들어오지 않네요... ㅠㅠ 그래서 정확한 의미전달이 힘듭니다. 다만 Ben Turner와 Dan Veditz에 의해 알려진 chrome injection 취약점을 이용해서 실행하는 것 같다는 생각은 드네요..

이 부분에서 정확한 개념정리를 누군가가 해주세여~ ㅠㅠ

아무튼 제 관심이란 부분이 단순히 그 문제만 말하는것이 아니라 최근에 Safari Carpet-bombing 이라고 알려지고 있는(이미 패치됐음-_-) 기법과 함께 쓰였을 경우 강력한 효과를 발휘한다는 것입니다. 이전에 Safari와 IE사이에서 이와 같은 문제가 발생해서 이슈화 됐던적이 있죠. 즉, 하나의 어플리케이션으로는 큰 문제가 되지 않는데... 두 개이상의 어플리케이션의 기능이 연계되서 큰 힘을 발휘하는 것이죠. 이런것을 Blended Attack이라고 한답니다.

파이어폭스에서 관련 취약점을 발견한 Billy Rios씨는 이러한 현상을 하나의 ecosystem에 비유해서 이야기를 하고 있습니다. 컴퓨터 시스템도 일종의 생태계이기 때문에 하나의 문제는 그 자체의 문제로 끝나지 않고 다른 쪽으로 영향을 미친다는 것입니다. 저도 이말에 전적으로 동의를 합니다. 완전히 똑같은 비유는 아니지만 지난 번에 분석했던 Flash 취약점의 경우도 두 가지 이상의 문제점이 결함하여 강력한 문제를 발생시킨 것이죠.. 물론 이는 같은 어플리케이션의 문제이지만 말이죠..

과거와는 다르게 IE의 대항마로 나타난 Firefox 그리고 제 3세계(?)의 Safari... 이 세 브라우저가 만들어내는 재미난 생태계가 어떻게 전개될런지.. 앞으로 흥미진진하겠네요..



이글루스 가든 - professional secur...

by fullc0de | 2008/07/17 14:52 | 보안 | 트랙백(2) | 덧글(5)

◀ 이전 페이지          다음 페이지 ▶