Unix/Linux 포렌식에서 조사관은 로그 분석을 통해 침입자의 다양한 침입 흔적을 알 수 있다. 시스템에 대한 스캔 행위, exploit 을 통한 공격, 특정 사용자 계정으로의 접속, root 권한 획득, 트로이 목마 설치, 자료 유출 및 삭제 등 공격자의 행위 하나하나가 모두 시스템에 의해 감시 되고 로그로 남기 때문이다.
그럼 먼저 일반적인 Unix/Linux의 로그 저장 경로를 알아보자.
/usr/admin : 초기 유닉스, BSD 계열(HP-UX 9.X , SunOS 4.X)
/var/admin : 최근 유닉스, BSD 계열(SUN Solaris , HP-UX 20.X 이후, IBM AIX)
/var/log : 일부 BSD 계열(BSD, FreeBSD, Sun Solarix, Linux)
로그 | 저장 데이터 |
utmp, utmpx | 현재 로그인한 사용자들에 대한 상태 정보 |
wtmp, wtmpx | 사용자들의 로그인-아웃 정보 |
sulog, authlog | su(switch user) 명령어 사용 정보 |
syslog, secure | 사용자 인증에 관련된 정보 |
loginlog, failedlogin, btmp | 실패한 로그인 정보 |
shutdownlog | 셧다운, 리부팅, 홀트 정보 |
access_log, error_log | 웹 서버 접속 정보, 에러 정보 |
lastlog | 각 사용자의 최근 로그인 정보 |
messages | 콘솔 상의 화면에 출력되는 메세지 정보 |
xferlog | FTP 데몬을 통해 송수신 되는 데이터 정보 |
acct, pacct | 각 사용자별 실행한 명령어 정보 |
history | 각 사용자별 실행한 명령어, 인자 정보 |
sialog | Compaq Tru64 OS의 su 명령어 사용 정보 |
위에서 대략적으로 설명한 로그들은 시스템 별로 각각 저장 여부가 다르다. 실제 시스템별 저장되는 로그는 다음 표와 같다.
로그 | Solaris 2.X | HP-UX 9.X | IBM AIX | Linux | Compaq Tru64 |
utpmx, wtmpx | /var/adm(/etc) | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
utmp, wtmp | /var/adm(/etc) | /usr/adm | /var/adm | /var/log(wtmp) /var/run(utmp) | /var/adm |
btmp | 해당 없음 | /usr/adm | 해당 없음 | /var/log | 해당 없음 |
syslog | /var/log | /usr/adm/sys log/syslog.log | /var/adm | 해당 없음 | /var/log |
secure | 해당 없음 | 해당 없음 | 해당 없음 | /var/log | 해당 없음 |
sulog | /var/adm | /usr/adm | /var/adm | 해당 없음 | 해당 없음 |
pacct | /var/adm | /var/adm | /var/adm | /var/log | /var/log |
authlog | /var/log | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
messages | /var/adm | /var/adm | /var/adm | /var/log | /var/adm |
loginlog | /var/adm | 해당 없음 | 해당 없음 | 해당 없음 | /var/adm |
failedlogin | 해당 없음 | 해당 없음 | /etc/security | 해당 없음 | 해당 없음 |
sialog | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | /var/adm |
다음은 각 로그 파일에 대한 상세 설명이다.
(그림 출처 : "UNIX 로그분석을 통한 침입자 추적 및 로그관리 : Part 1" by 정현철)
1. utmp, utmpx
- 시스템에 현재 로그인한 사용자들에 대한 상태를 기록(바이너리 형식)
- /var/run (Linux) 혹은 /var/adm, /etc/ (Solaris) 등에 위치함
- 사용자 이름, 터미널 장치 이름, 원격 로그인 시 원격 호스트 이름, 사용자 로그인한
시간 등을 기록
- who, w, whodo, users, finger 등의 명령어를 통해 내용 확인 가능
- 'w'는 utmp(x)를 참조하여 현재 시스템에 성공적으로 로그인한 사용자에 대한 snapshot
을 제공해 주는 명령으로 해킹 피해 시스템 분석 시에 반드시 실행해 보아야 함
※ 분석 포인트!!!
1) 접속한 계정이 모든 정상적인 계정인가?
2) 접속 IP가 내부 IP 이외 이거나 국외 IP인가?
3) 사용자 행위가 정상적인가? 스캔툴이나 DOS 공격을 수행하는지 확인한다.
그림1. 'w' 명령을 통한 현재 로그인 사용자의 snapshot 확인
2. wtmp, wtmpx
- 현재까지의 각 사용자 별 로그인/아웃 누적 정보(바이너리 형식 : utmp strcture 사용)
- 시스템 셧다운, 부팅 히스토리까지 포함
- 'last' 명령을 통해 내용 확인 가능
- 로그 파일 rotate 시, 이전 wtmp 데이터는 'wtmp.1' 형태로 저장됨
'last -f ./wtmp.1" 형식으로 내용 확인 가능
※ 분석 포인트!!!
1) 접속 시간이 정상적인가? 보통 공격은 새벽 시간대에 이루어짐
2) 접속 IP가 내부 IP 이외 이거나 국외 IP인가?
- su(switch user) 명령어 사용 기록(텍스트 형식)
- 날짜 및 시간, 성공(+)/실패(-), 사용한 터미널 이름, from 사용자, to 사용자 등의 정보가
포함
※ 분석 포인트!!!
'su' 명령은 다른 사용자의 ID로 로그인하는 것과 동일한 효과를 가지므로 로그인 정보
를 기록하는 utmp/wtmp 파일과 연동하여 분석할 필요가 있음
=> su 명령을 통해 관리자 권한을 얻더라도 utmp와 wtmp에 기록이 남지 않음
=> 일반 사용자로 로그인한 후, 'su' 명령을 통한 권한 상승은 불법적인 접근으로 의심해
볼 수 있음
4. syslog, secure
- 사용자 인증과 관련된 로그 및 커널, 데몬들에서 생성된 모든 로그를 기록(텍스트 형식)
- rsh, rlogin, ftp, finger, telnet, pop3 등에 대한 접속 기록 및 접속 실패 기록 등 시스템의
보안과 밀접한 관계에 있는 로그
- 보안사고가 발생할 경우 가장 먼저 백업하여야 하며 가장 먼저 분석을 시도하여 하는
로그 파일
- Linux 계열에서는 secure 로그로 남음
※ 분석 포인트!!!
1) 아래 그림과 같이 짧은 시간 안에 여러 서비스에 대한 접속 시도는 multiple 스캔 공격
으로 판단 가능
2) 버퍼오버플로우 흔적을 찾을 수 있음
- 실패한 로그인 시도를 기록(텍스트 형식)
- 기본적으로 생성되지 않고 수동으로 생성해 주어야 함
- 사용자ID, 터미널명, 날짜 및 시간
- Solaris를 포함한 시스템 V 계열의 유닉스에서는 loginlog파일이 사용됨(Text 형식)
- Linux와 HP-UX에서는 btmp 파일을, AIX에서는 failedlogin 파일을 사용(바이너리 형식)
- Linux의 경우, 'lastb' 명령을 사용하여 btmp 파일의 내용을 확인 가능
- 특정 IP로 부터의 다수의 접속 실패는 Brute-Force 공격으로 의심할 수 있음
해 확인
6. shutdownlog
- HP-UX 에만 있는 로그, 시스템의 shutdown, reboting, halt 내역 기록(텍스트 형식)
※ 분석 포인트!!!
- 일반 사용자가 'su'로 권한 상승 후, 'shutdown' 명령 실행시 로그 파일에 일반 사용자
ID로 기록이 남음 => 시스템이 해커에 의해 리부팅 혹은 셧다운 되었는지 확인 가능
- 'reboot after panic'이란 flag로 기록이 남으면 커널 패닉으로 판단, 시스템 장애추적에
활용될 수 있음
7. access_log, error_log
- access_log : 웹 페이지 접속 및 파일 다운로드 기록(텍스트 형식)
- error_log : 존재하지 않는 파일에 대한 접근 등의 에러 기록(텍스트 형식)
※ 분석 포인트!!!
1) 웹 서버에 대한 공격은 주로 CGI 프로그램에 집중, 취약한 CGI 프로그램에 대한 공격
로그를 검사
2) 웹 서버마다 로그 포멧이 모두 조금씩 다름. 각각의 포멧을 익혀두는 것이 필요.
- 각 사용자가 가장 최근에 로그인한 시간과 접속장소가 기록(바이너리 형식)
- 동일한 사용자에 대해서는 이전 내용을 overwrite 함
- wtmp(x), utmp(x) 등 사용자와 관련된 로그와 병행하여 함께 분석하여야 하는 파일
- IBM AIX의 lastlog의 경우, 텍스트 형식으로 저장됨
- 'lastlog' 명령을 통해 내용 확인 가능
- 콘솔 상의 화면에 출력되는 메세지들을 기록(텍스트 형식)
- timestamp, 호스트명, 프로그램명, 메시지 내용
- 메세지 내용에는 su 실패에 대한 로그, 특정 데몬이 비활성화된 로그, 부팅시에 발생된
에러 등 다양한 로그들을 포함
- syslog와 마찬가지로 보안사고가 발생시에 가장 먼저 분석을 하여야 하는 파일
※ 분석 포인트!!!
1) 취약점을 가진 다양한 서비스들을 미리 파악하여 분석 수행
2) 로그만을 통해 취약점에 대한 공격의 성공/실패 여부는 알 수 없기 때문에 해당 취약점
의 특성을 파악하여 직접 확인할 필요가 있음
3) 대부분의 버퍼오버플로우 공격의 경우, 아래 그림과 같이 비정상적인 로그가 기록됨
설정되어 있어야 함. 따라서 아래 그림과 같이 'messages' 로그에서 네트워크 카드의
Promiscouos 모드 On/Off 시간을 알 수 있음.
- ftp 데몬을 통하여 송수신되는 모든 파일에 대한 기록(텍스트 형식)
- 송수신 자료와 시간, 송수신을 수행한 원격 호스트, 송수신된 파일의 크기, 송수신된 파
일의 이름, 파일의 송수신 모드, 특수 행위 플래그, 전송 방향, 로그인한 사용자의 종류
- 디폴트로는 로그가 남지 않으며 '/etc/inetd.conf' 에서 'ftp stream tcp nowait
root /usr/sbin/tcpdin.ftpd -l -a'와 같이 '-l' 옵션을 주었을 때만 로그 생성
※ 분석 포인트!!!
1) 접속 시간이 정상적인가?
2) 접속 IP가 내부 IP 이외 이거나 국외 IP인가?
3) 송수신한 파일이 해킹툴이나 주요 자료인지 확인
4) wtmp와 utmp와 병행 분석
=> wtmp에는 ftp 접속 흔적이 남아 있지 않은데 xferlog에는 기록이 남아 있을 때 침입
을 의심할 수 있음
- 명령어의 아규먼트는 기록되지 않음
- 'lastcomm'이나 'acctcom' 명령어을 통해 내용 확인 가능
- 기본적으로 실행되지 않으면 'startup' 이나 'accton' 명령어로 설정
※ 분석 포인트!!!
1) acct, pacct 로그에는 사용한 명령어만 남으므로 history 로그를 통해 보완한다.
- 각 사용자별로 수행한 명령을 기록(텍스트 형식)
- 명령어의 아규먼트를 모두 기록
- 쉘에 따라 .sh_history, .history, .bash_history 등의 파일로 기록
※ 분석 포인트!!!
1) 로그 파일은 각 사용자의 홈 디렉토리에 숨긴 파일 형태로 저장됨
2) 백도어와 같이 비정상적으로 루트 쉘을 획득할 경우, 루트의 홈 디렉토리(/root/)가
아닌 최상위 디렉토리에 로그 파일이 생성됨
- Compaq Tru64에 sulog와 authlog 대신 저장되는 로그
※ Compaq Tru64 로그 체계
1) SIA(Security Integration Architecture)라는 독특한 보안체계가 있기 때문에 일반적인
System V 계열과는 차이가 있음
2) 같은 파일명을 사용하더라도 타 UNIX 계열과 로그 포멧이 대부분 다름
- wtmpx : '/var/adm'에 저장(다른 포멧)
- pacct : '/var/adm'에 저장(다른 포멧)
- messages : '/var/adm'에 저장(같은 포멧)
- loginlog : '/var/adm'에 저장(같은 포멧)
- lastlog : '/var/adm'에 저장(다른 포멧)
- sulog와 authlog가 없는 대신 /var/adm 에 sialog 저장
* 출처 : http://blueangel-forensic-note.tistory.com/entry/UnixLinux-%EB%A1%9C%EA%B7%B8
'Digital Forensics > Linux' 카테고리의 다른 글
리눅스(EXT2)에서 삭제된 파일 복구하기 - 12 (완성) (0) | 2010.03.17 |
---|---|
리눅스(EXT2)에서 삭제된 파일 복구하기 - 11 (0) | 2010.03.16 |
리눅스(EXT2)에서 삭제된 파일 복구하기 - 10 (0) | 2010.03.15 |
리눅스(EXT2)에서 삭제된 파일 복구하기 - 9 (0) | 2010.03.15 |
리눅스(EXT2)에서 삭제된 파일 복구하기 - 8 (0) | 2010.03.15 |