티스토리 뷰

보안

리눅스 취약점검

초보의 CHOMAN 2015.06.08 16:30

서버내 과도한 트래픽 발생하는 경우 점검할 사항
- 서버내에 존재하지 않는 파일 존재 ( ls -all)
- DB 또는 웹페이지의 소스 일부 또는 전체가 변조 (iframe 삽입 포함)
- 중요 명령어 결과가 이상하거나 이유없이 깨짐
- 최근 접속목록중 알지 못하던 IP주소로 접속한 내용흔적
- 로그에 critical 급 로그나 공격시도 (buffer overflow 등) 관련 내용이 기재
- /etc/crontab에 보지못한 스크립트 삽입 및 sh파일 존재
- 시스템이 패킷캡쳐중이 아닌데 PROMISC 모드로 동작 

- 웹사이트 이상증세
: 악성코드 오류
: Flash 파일 로딩시 에러메세지
: 페이지가 다른 곳으로 이동되거나 변조됨
- 과다한 프로세스 및 소켓 연결 상태


피해 시스템 분석에 필요한 시스템 명령어

- netstat : 네트워크 연결상태 및 라우팅 테이블 정보 확인
- dd : 디스크 이미지 복사
- find : 특정조건에 해당하는 파일 검색
- netcat(nc) : 다목적 네트워킹 도구
- ps : 실행중인 프로세스 및 리스트 상태
- lsof : 현재 프로세스로 인해 opne 된 파일을 다양한 방법으로 수집
- string : text/bin 파일에서 스트링 문자만 출력
- last : 사용자 로그인 / 로그아웃 정보
- ifconfig : 네트워크 인터페이스 설정 상태 및 트래픽 패킷 상태 확인
- uptime : 시스템 구동시간과 부하상태
- w : 현재 접속자 확인
- arp : arp 캐쉬확인 및 수정
- md5sum : md5 체크섬 값 생성
- script : 터미널 세션의 모든 키 입력과 결과를 파일에 기록
- file : 파일의 종류를 알려줌
- lsmod : 커널에 적재된 모듈 목록
- modinfo : 커널 모듈에 대한 정보 




상세분석


ps -ef : 프로세스 실행자 PID 및 실행일시 프로세스명 확인


lsof : 시스템의 모든 프로세스가 로딩된 파일 오픈상태 확인


netstat -anlp : ip포트에 대한 확인


w : 현재 접속자 확인


find : 보통 setuid 을 체크하거나 웹해킹이 많아져 nobody 나 www 권한을 가진 파일을 체크 


cat /etc/passwd : root 제외한 계정중 uid가 0이거나 확인되지 않은 계정이 존재하는지 점검 패스워드 부분에 null 로 되어 있는 계정 확인


ROOT KIT 확인 : 공격자는 자신의 행동을 숨기기 위해 정상적인 프로그램을 바이너리 파일 변조
- ls가 변조될 경우 ls 를 할경우 공격자가 심어놓은 파일이 보이지 않음
- 많이 변조되는 파일들 : ls, ps, lsof, netstat, login, top, dir, du, ifconfig, find, tcpd


시스템 프로그램의 크기, 생성시간, 변경시간 확인, /usr/bin/sbin 등에 가서 ls -alct | more 로 확인했을시 다른프로그램들과 설치된 시간이 확연히 다르면 의심해볼수 있음레드헷 계열의 경우 'rpm -V 패키지명' 으로 무결성 검사 가능


Rootkit 으로 인해 변조가 많이 되는 rpm 패키지들임
- net-tools lsof coreutils, procps, findutils


ex) rpm -V procps
.M.....G. /bin/ps : 파일접근 권한 소유그룹 변조
S.5..... /usr/bin/pkill : 사이즈 md5 변조


로그파일 확인

/var/log/utmp
- 현재 시스템에 로그인한 사용자나 과거에 로그인했던 사용자 정보가 저장됨 (시스템 분석시 꼭 확인해야 함)
- /etc/passwd 파일에 등재된 사용자가 로그인했을시만 로그가 생성되어짐


/var/log/message
- 시스템 전반적인 로그


웹로그
- 웹 취약점에 대한 공격으로 D sql 이나 HDSL 등 자동화 된 툴로 공격하게 됨에 따라 로그 점검
ex) xxx.xxx.xxx.xxx - - [13/Jun/2008:15:07:05 +0900] "GET /index.php HTTP/1.1"
200 10261 "http://www.google.co.kr" "Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1; .NET CLR 2.0.30761)"

xxx.xxx.xxx.xxx : 해당 웹서버에 접속한 IP 주소
-- : 사용자 이름을 표시하지만 보통 -- 로 표시
-- : 패스워드가 표시되는 부분, 사용자 인증이 성공했을시 ID가 표시된다
날짜: 접속자가 접속한 시간, +0900 GMT는 그리니치 표준시를 의미
GET / : 접속한 방식 (GET / POST) 접속한 파일이름과 변수가 표시되며 바로뒤에 HTTP 버젼 표시
200 : 접속자가 요청된 내용이 처리된 상태를 코드로표시


코드의 의미
1XX : Continue / Protocol Change
2XX : 요청 성공 200: 전송성공 204 : 파일은 있으나 내용이 없음
3XX : 요구한 데이터가 옮겨진 URL에 존재 300: 옮겨진 데이터요청 301 : 요구한 데이터를 임시URL에서 찾음
4XX : 접속자 에러 / 실패 401: 인증실패 403 : 접근거부 404 : 파일이 존재하지 않음
5XX : 서버 에러 / 실패 500: 잘못된 스크립트 실행(내부오류) 503: 서비스가 죽었거나 멈춤


해커가 칩입하여 파일을 수정하거 새롭게 생성하였다고 가정했을때 파일을 찾기
최근 10일동안 수정되거나 새롭게 생성된 파일 찾아서 /home/ctime10.out 에 저장
- find / -ctime -10 -print -xdev > /home/ctime10.out


setuid를 가지는 실행프로그램은 실행이 root 권한을 가지고 실행되므로 조사
- find / -user root -perm -4000 -print > /home/suidlist
- find / -user root -perm -2000 -print > /home/sgidlist


숨겨둔 파일 찾기 (공격자가 해킹된 파일을 가져다 놓는 디렉토리)
- /tmp /dev /dev/shm /usr /var/tmp /var ...







. .. ... 을 포함된 디렉토리나 파일을 만들어 사용하는 경우 많음
- find / -name *..*” -print
- find / -name *.*” -print

일반적으로 /dev 밑에는 MAKEDEV 등과 같은 device관리 파일외에 일반파일이 있으면 안되므로 device 관리 파일외 존재하는 일반파일 찾기
- find /dev -type f -print

해킹으로 심어진 파일이 nobody 권한을 가지는 경우 웹해킹으로 발생하였을 가능성이 있음 웹서버 로그를 확인하여 문제가 있는 소스를 
패치한후 악성코드를 모두 제거

해킹 당한 서버의 80% 이상이 botnet, Zombie 호스트로 악용당할 확률 매우 높음 → 프로세스를 유심히 살펴야 함

- [sh] <defuct> 의 경우 웹상에서 시스템 커맨드를 사용하였을때 나타는 증상으로 웹셀에서는 같은 증상이 나타나게 됨
- nobody 권한으로 아파치 프로세스가 떠 있음

최근 접속목록에서 모르던 아이피에서 접속한 흔적 찾기 (무작위 대입공격에 의해 성공하기 이전에 로그가 많이 남아 있음)

피해계정은 반드시 삭제하며 모든 계정의 아이디/암호 변경 /etc/sshd/sshd_config에서
AllowUsers ID 을 수정하여 특정계정에서만 접속을 허용하도록 조치

pam_abl 을 설치하여 로그인 X회 실패시 얼마간 차단하는 기능도 좋은 방법
FTP Brute-force 공격등에도 적용하고 싶다면 denyhosts , iptables 의 ULOG –hitcount 등을 통해서도 피해 막을수 있


ls -al /tmp/
ls -al /var/tmp/
top

ps -ef | grep httpd | grep -v grep : grep 빼고 httpd 만

lsof -p pid : PID를 쓰는 데몬이 어떤 파일 라이브러리를 쓰는지 ...
ex ) lsof -p 18565

/usr/local/apache/logs : 대부분 웹 취약점으로 해킹 (싸그리 다 뒤지기) 
- 업로드된 스크립트가 test.sh 이면 grep 'test.sh' ./* > smie.txt 로그 다 뒤져서 test.sh 관련로그 smile.txt로 남기기

php 파일 jsp 파일만 스크립트 실행됨 (txt, html, xml 스크립트 실행되지 않음)
- find /home -user nobody |grep "\.php" | grep -v grep > smile.txt (PHP)

apache 가 nobody 만 권한으로 실행되면 passwd 파일에 nobody계정은 시스템 계정이라 로그인 되지 않음, 실제로 획득이 불가능
- 웹 해킹시 home 디렉토리에서 nobody권한을 가진 파일 싸그리 찾기 (php와 jsp만)

access.log에서 /robots.txt HTTP/1.1" 200 272
- 200 : 파일을 읽거나 쓰기에 성공한 로그이므로 404 not found 는 무시하고 200으로 된 로그만 싸그리 뒤지기

댓글
댓글쓰기 폼