레이블이 취약점인 게시물을 표시합니다. 모든 게시물 표시
레이블이 취약점인 게시물을 표시합니다. 모든 게시물 표시

2011년 1월 20일 목요일

압축 프로그램 알집 취약점 공개돼,주의 필요!

국내에서 대표적으로 많이 이용되는 압축프로그램인 알집에 대한 취약점이 공개되었더군요.
버퍼오버플로우 취약점으로, 조작된 헤더파일을 갖고 있는 압축파일을 알집을 통해
오픈하면 악의적코드가 실행될 수 있습니다. 일단, 주의가 필요할 것 같아 글 남깁니다.

공격코드 작성자는 브라질사람이 아닌가 합니다. 공격코드의 주석등을 추정해 봤을때~
비디오 동영상도 올려놨던데, 참고하세요.



테스트한 버전은 8.12.0.3 이라고 합니다.

2010년 11월 9일 화요일

안드로이드폰 취약점 테스트 결과 - 권한획득 OK !

몇일전 안드로이드 취약점에 대해서 포스팅을 하였다. 이제서야 테스팅을 해 보았는데, 제대로 동작을 잘 한다.
WebKit 의 취약점을 이용하는 것인 만큼, 사용자는 공격자가 만들어 놓은 웹 페이지에 접속하는 것만으로도
권한을 얻을 수 있는 가능성을 제공해 준다.

공격코드에 포함된 쉘 코드는 리버스쉘 코드로 원격에서 명령어 수행이 가능해진다. 일전에 안드로이드 폰의
IP 에 대해서 알아보았는데, 필자가 사용하는 것은 내부에서는 Private 주소를 사용하게 된다. 이 뜻은, NAT 개념과 같아서 외부에서는 내부 안드로이드 폰으로 접근이 현실적으로 쉽지 않다. 하지만, 리버스 쉘은 안드로이드 폰 자체에서 외부로 접속하는 것이므로 쉽게 우회가 가능해진다.

다음과 같은 형태로 테스트를 진행했다.

192.168.0.223 (안드로이드 폰) -> 192.168.0.240: 7777 (웹 서버)  로 접근하여 취약점 코드 페이지가 실행되고, 리버스 쉘 코드가 수행되어 다시 192.168.0.240 의 7777 번 포트로 연결이 되는 것이다. 접속되면 아래와 같이 연결이 된 것을 확인할 수 있다.

$ netstat -na | grep 7777
tcp        0      0 192.168.0.240:7777      192.168.0.223:54960     ESTABLISHED

다음은 접속화면의 예로, ls 명령어 수행과 df 를 한 결과이다.


ps 를 통해 프로세스의 결과 일부는 아래와 같고, 뒤에 id 를 통해 권한을 확인한 것이다.

app_40    3095  1201  668    324   c006e1b8 afe0d62c S ///system/bin/sh
app_40    3139  3095  668    324   c006e1b8 afe0d62c S /system/bin/sh
app_40    3147  3139  668    316   c006e1b8 afe0d62c S /system/bin/sh
app_40    3149  3147  2128   420   c006e1b8 0010d508 S /system/bin/busybox
app_40    3173  3149  816    336   00000000 afe0c75c R ps
id
uid=10040(app_40) gid=10040(app_40) groups=1015(sdcard_rw),3003(inet)

접속된 권한이 app_40 이므로, 실행된 각 프로세스는 app_40 을 갖고 있다.

이렇게 쉘 권한을 얻었다는 뜻은 무엇일까? 원하는대로 조작이 충분히 가능해 지는 것이다. 물론 권한 제약이 있지만, 이전에 공개된 root 권한을 획득하는 공격코드와 같은 것만 제대로 준비되면 이것또한 가능해 진다.

무엇보다도 이번에 공개된 취약점의 장점은, 현재 인터넷 상에서 많이 발생하는 웹을 이용한 형태의 취약점과
같이 안드로이드폰의 브라우저를 통해 특정 사이트를 방문하는 것 만으로 권한획득이 가능해 진다는 점에서
앞으로 안드로이드를 이용한 위험성에 대해서 더욱 깊게 고민해 봐야 될 문제이다.
사용자가 조작된 페이지에 방문하게 하는 것은 사회공학적 기법만을 사용해서도 어렵지 않게 끌어들일 수 있다.

참고로, 브라우저를 통해 접속된 후에는 브라우저가 Crash 되어 종료버린다.

이 글의 목적은 현재 공개된 안드로이드  취약점코드에 대해 위험성을 알리고자 하는 것이다. 악의적으로
이용되지 않기를 바라며, 앞으로 브라우저를 통한 웹 사이트 방문시에는 주의가 요구된다.
(* 안드로이드 2.2 에서는 패치가 된 상태이다.)

[관련 글]

2010년 11월 6일 토요일

웹 기반의 안드로이드 공격 코드 공개...주의!

웹 기반의 안드로이드 공격이 가능한 취약점이 공개되었다. 웹 환경에서 많이 발생하는 형태의
요즈음 공격방식과 같이 말이다. 몇일전에도 IE 취약점과 관련하여 0-day 취약점이 공개되어
주의가 요구 되고 있다.

최근 알려진 안드로이드 취약점은 WebKit 의 취약점을 이용한 것으로, 안드로이드 단말기에서
악의적 코드가 삽입되어 있는 사이트에 방문하였을 경우 임의의 코드가 실행될 수 있는 것이다.
이번 취약점은 CVE-2010-1807 로 사파리에서 발견된 버그인데, 그대로 안드로이드에서도 재현이 된다는 것이다. floating-point 데이터를 제대로 검증하지 않아 발생되는 것으로, 조작된 웹 페이지를 통해
임의의 코드 실행또는 애플리케이션 Crash 로 DoS 상태를 만들 수 있다.

<공격코드의 일부>  
for (i = 0; i <= 1000; i++)
        {
                if (i>999)
        {
        sploit(-parseFloat("NAN(ffffe00572c60)"));
        }
        document.write("The targets!! " + target[i]);
        document.write("<br />");
....(생략)

관련 취약점을 이용한 공격코드도 이미 Public 하게 공개되어 있어 주의가 요구된다.
안드로이드 2.2 버전 이상에서는 영향을 받지 않는다. 구글에 따르면 안드로이드폰 36.2%는 2.2 로 운영된다고 한다.

시간이 되는 대로 나의 안드로이드 단말기에서도 테스트 해 볼 예정이다.

어찌되었든 중요한 것은 모바일 단말기들에 대한 보안 위협이 점차 커지고 있다는 것이다. 특히나 이와 같이
조작된 웹 페이지를 방문하는 것만으로도 영향을 받을 수 있다는 것은 지금 현재의 컴퓨터에서 일어나는
보안 위협이 많은 부분 모바일에서도 나타날 수 있다는 뜻이 된다. 물론, 제한된 권한으로 완벽한 접근에는 한계가 있지만.. 루팅이 된 단말기라면 얘기는 달라진다. 또한 루트를 얻을 수 있는 취약점등을 이용해 원격에서도
가능해진다면 이것은 말 하지 않아도 추측이 가능할 것이다.


2010년 6월 5일 토요일

패킷 분석을 위한 패킷파일(PCAP), 여기서 구해보세요!

일전에 패킷 파일을 구하기 위한 글을 포스팅 한적이 있다. 네트워크 분석이라는 것은 해보고 싶은데,
내 컴퓨터에서만 패킷파일을 덤프하여 보자니 흥미롭지도 않고. 이럴때, 다양한 형태의 패킷파일을
살펴볼 수 있다면 분석 실력을 키우는데도 큰 도움이 될 것이다.

다음 글을 읽어보지 못한 사용자라면 한번 살펴보기 바란다.

- 패킷 저장창고를 활용해보자
- 네트워크 패킷캡쳐 샘플파일 어디 구할데 없나요?

필요한 패킷파일도 업무 또는 필요에 따라서 많이 달라진다. 범위가 워낙 넓기 때문에 이것은 당연한 것이다.
이전 포스팅에 이어 3군데를 소개하고자 한다.

1) Evil Fingers
보안쪽과 관련한 패킷파일을 구할 수가 있다. 예를 들면, 최근에 이슈가 되었던 Aurora 및 다양한 공격코드
패킷파일을 볼 수 있다. 패킷파일안에 실제 Payload 가 포함되어 있기 때문에 직접 공격코드를 얻을 수 있는 부분도 있겠지만, 그런것 보단 네트워크 관점에서 어떻게 취약점이 이용되고 , 그 과정이 어떻게 되었는지
살펴보며 공부할 수 있기를 바란다.

2) OpenPacket.org
취약점 관련 및 기타 패킷 파일을 얻을 수 있다.

3) PacketLife
네트워크 관련한 패킷 정보를 얻고 싶다면 이곳에서 찾아보시라. 다양한 프로토콜별 패킷 파일들을 찾아볼 수 있다.

항상 머리속으로만 기억하려니 자꾸 잊어버리고, 이번 기회를 통해서 정리하니 앞으로 머리속에서는 지워도 될것 같다 :-)

여하튼 이제 앞서 소개한 포스팅과 이번에 언급한 정보만 참고해도 왠만한 패킷파일은 찾을 수 있을 것이다. 이제 패킷 분석을 하기 위한 총알은 충분해 진 것 같다. 패킷파일이 없어서 못 한다고는 하지 못할 것이다. ^..^

패킷 분석의 세계로 Go~Go~

2010년 5월 6일 목요일

구글의 얄스버그 (Jarlsberg)를 통해 웹 해킹을 이해해 보자.

웹 보안에 관심이 많다면, 구글에서 개설한 Jarlsberg 사이트를 방문해 보기를 바란다.
이 페이지에서는 다음과 같은 것을 배울 수 있다.
  • 해커가 어떻게 보안 취약점을 찾는지
  • 해커가 웹 응용프로그램을 어떻게 악용하는지
  • 그리고 이 문제점들을 어떻게 멈추게 할 수 있는지 배울 수 있다.

즉, 몇년전 부터 큰 이슈가 되고 있는 웹 보안에 대해서 체계적으로 이해하고 배울 수 있도록 만들어 놓은 페이지이다.  일반적인 웹 취약점인 XSS, 정보노출, 원격코드 실행 등. 많은것을 알 수가 있다.


[출처] Jarlsberg 사이트

하나 하나 한 단계식 밟아가기 위해서는 다음 페이지를 방문하면 된다.


실제 취약점을 내포하고 있는 페이지는 http://jarlsberg.appspot.com/start 로 가면 된다. 구글의 앱 엔진이 시작되면서 Unique 한 ID 를 만들고 시작된다. 물론 이 Jarlsberg 의 소스코드도 받을 수 있다.
여기서 소개한 한 예제인 XSS 를 보면

http://jarlsberg.appspot.com/part2#2__xss_challenge 를 보면 아래와 같은 URL 을 통해 스크립트를 실행할 수 있다.


XSS 는 현재 많이 이용되는 웹 공격 방법중에 하나이며, Jarlsberg 는 어떻게 이런 일이 발생될 수 있고, 어떻게 방어해야 할지 알려준다. 구글의 이런 노력이 너무 좋다. 참 Jarlsberg 의 원래 의미를 찾아보면, 살균우유를 압착해 숙성시킨 노르웨이 하드치즈라고 한다. 발음이 어떻게 될까 했는데, 얄스버그 라고 한다.

2010년 4월 18일 일요일

구글에서 배포한 웹 보안 스캐너 Skipfish 를 이용해 보자

웹 보안 스캐너 도구를 하나 소개해 보고자 한다. 워낙 많은 도구가 존재하지만, 그 중에서도
구글이 만들어 배포하는 Skipfish 를 소개한다. 다운로드 및 세부 정보는 아래의 사이트를
방문해 보자


Skipfish 의 가장 큰 특징은 C 로 만들어져 있어 초당 2000 개 이상의 요청이 가능하다.
HTTP 핸들링에 있어 최적화 되어 있고, CPU 사용을 최소화한다. 사용이 쉽게 설계했다는
것도 Skipfish 가 자랑하는 점이며, 적은 오탐률과 뛰어난 기능을 자랑한다고 한다.

이 도구가 지원하는 스캐너 기능으로는 상,중,하의 위험도로 구분된 패턴과 내부 경고
메시지와 정보성의 메시지 정도로 구분된다. 상 위험도라 하면 서버 측면의
SQL 인젝션, 명령어 인젝션, 포맷 스트링 취약점 등이 있다.

참고로 업데이트 속도가 빠르다는 것도 장점이다. 이 도구를 소개하기 위해 접한게
1.09b 버전이었는데, 지금은 벌써 1.31 베타 버전이다. 설치는 어렵지 않게 진행할 수 있으며,
리눅스의 경우라면 컴파일 하기 위해 필요한 약간의 라이브러리 사전설치와 make 를
해 주기만 하면 된다. 필자의 경우는 libidn 이 없어 이것만 설치하고 쉽게 사용이 가능하였다.

# apt-get install libidn11-dev

# make
cc skipfish.c -o skipfish -Wall -funsigned-char -g -ggdb -D_FORTIFY_SOURCE=0 -I/usr/local/include/ -I/opt/local/include/ -O3 -Wno-format http_client.c database.c crawler.c analysis.c report.c -lcrypto -lssl -lidn -lz -L/usr/local/lib/ -L/opt/local/lib

NOTE: See dictionaries/README-FIRST to pick a dictionary for the tool.

컴파일 후, 실행을 시켜보면 아래와 같이 간단하다.
# ./skipfish
skipfish version 1.09b by <lcamtuf@google.com>
[-] PROGRAM ABORT : Scan target not specified (try -h for help).
    Stop location : main(), skipfish.c:379

특정 사이트를 대상으로 한번 실행해 보면 다음과 같은 이미지 결과를 볼 수 있다.

 
자, 그리고 skipfish 가 수행한 결과는 웹 페이지 형태로 깔끔하게 볼 수 있는데, 다양한 결과를 보여주고 있다.


웹 사이트를 초기 구축하였거나 운영중인 사이트가 있다면 Skipfish 를 통해 웹 사이트 점검을 해 보는 것은
어떨까 한다. 분명 많은 도움을 받을 수 있지 않을까 생각한다. 최소한 아무런 보안 점검 없이,
이러한 점검은 분명 사이트 안전에 큰 도움이 된다.


2010년 1월 8일 금요일

조작된 패킷 전송으로 주니퍼 라우터 크래쉬 또는 리부팅

주니퍼 라우터에 조작된 패킷을 전송할 경우, 라우터가 Crash 되거나 또는 리부팅 될 수 있는 취약점이 보고 되었다. 주니퍼는 자사의 취약점 권고문을 외부로 공개하지 않고, 등록된 사용자만이 볼 수 있으므로 자세한 내용은 알 수 없으나, 알려진 것은 아래와 같다.

- TCP 헤더중 TCP 헤더 옵션에 조작된 패킷을 전송할 경우, JunOS 커널 크래쉬를 일으킬 수 있다.
   (JunOS 는 주니퍼 라우터 제품에서 사용하는 운영체제이다)
- 라우터에서 오픈되어 있는 TCP 포트에 전송하면 된다.
- JunOS 방화벽에서도 이번 이슈와 관련한 패킷을 차단하지 못한다.
TCP_Header.jpg

이미지출처 : tomdixons.com , TCP 헤더

옵션 헤더 필드는 TCP 헤더에서 가장 마지막에 위치한 것이다. 영향을 받는 것은 2009년1월28일 전의 JunOS 3.x - 10.x 까지 해당된다. 현재 주니퍼 라우터를 운영하는 곳에서는 업그레이드 방법 이외에 임시적으로 이 문제를 해결하기 위한 방법은 없는 것으로 알려져 있다.
다음은 이번 취약점과 관련해 간단한 Concept 을 구현한 화면이다.
hod# ping 169.254.1.1
PING 169.254.1.1 (169.254.1.1): 56 data bytes
64 bytes from 169.254.1.1: icmp_seq=0 ttl=254 time=4.623 ms
64 bytes from 169.254.1.1: icmp_seq=1 ttl=254 time=4.531 ms
64 bytes from 169.254.1.1: icmp_seq=2 ttl=254 time=4.315 ms
^C<...>

hod# ./hod-junos-test 169.254.1.1 22
[*] Target IP: 169.254.1.1, Port: 22
[+] Sending TCP-packets with various crafted TCP options
[+] TCP options bruteforce progress:
[..........................................................
...........................................................
...........................................................
.......................................................]
[+] OK

hod# ping 169.254.1.1
PING 169.254.1.1 (169.254.1.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C


라우터는 인터넷 운영에 있어 핵심적인 장비로, ISP(Internet Service Provider) 등에서는 이런 취약점이 치명적이다. 네트워크 운영에서 장비들이 취약점을 갖는 경우 큰 문제를 야기할 수 있어, 네트워크를 관리하는 담당자라면 사용하는 벤더의 보안 권고문을 구독하는등 관리 뿐만 아니라 보안에도 관심을 가져야 할 것이다.