수사(Investigation)2017.10.12 10:06

<형사소송법>

제16조의2(사건의 군사법원 이송) 법원은 공소가 제기된 사건에 대하여 군사법원이 재판권을 가지게 되었거나 재판권을 가졌음이 판명된 때에는 결정으로 사건을 재판권이 있는 같은 심급의 군사법원으로 이송한다. 이 경우에 이송전에 행한 소송행위는 이송후에도 그 효력에 영향이 없다.


<국방부와 경찰청과의 수사업무 공조협정>

제1조(수사의 분담) ① 「군사법원법」제2조 및 제3조에 의하여 군사법원이 재판권을 갖는 범죄와 「사법경찰관리의 직무를 행할 자와 그 직무범위에 관한 법률」 제9조에서 정하는 범죄에 대하여는 국방부장관과 각 군 참모총장의 지휘를 받는 군수사기관이 수사업무를 담당한다.


<군사법원법>

제2조(신분적 재판권) ① 군사법원은 다음 각 호의 어느 하나에 해당하는 사람이 범한 죄에 대하여 재판권을 가진다.

 1. 「군형법」 제1조제1항부터 제4항까지에 규정된 사람. 다만, 「군형법」 제1조제4항에 규정된 사람 중 다음 각 목의 어느 하나에 해당하는 내국인ㆍ외국인은 제외한다.


<군형법>

1조(적용대상자) ① 이 법은 이 법에 규정된 죄를 범한 대한민국 군인에게 적용한다.

② 제1항에서 "군인"이란 현역에 복무하는 장교, 준사관, 부사관 및 병(兵)을 말한다. 다만, 전환복무(轉換服務) 중인 병은 제외한다.



<범죄수사규칙>

제190조(이송과 인계) ① 경찰관서장은 관할구역 내의 사건이 아니거나 해당 경찰관서에서 수사하는 것이 부적당하다고 인정되는 사건은 신속히 이를 범죄지 또는 피의자의 거주지를 관할하는 경찰관서, 수사에 적합한 경찰관서나 기관에 이송 또는 인계하여야 한다. 다만, 상급 기관에서 하명된 사건을 이송할 때에는 미리 상급기관의 승인을 받아야 한다.


<사건의 관할 및 관할사건수사에 관한 규칙>

제6조(사건관할이 불분명한 경우의 관할지정) 

④ 제1항부터 제3항까지의 규정에도 불구하고 국민안전처(해양경비안전본부), "군수사기관", 철도특별사법경찰대 등 다른 국가기관과 협의하여 정한 협정 등이 있으면 이를 이 규칙보다 우선하여 적용한다.

Posted by CCIBOMB 김범연
Digital Forensics/Linux2016.06.23 10:46

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)

/var/run : 일부 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인가?

그림 2. 'last' 명령을 통한 wtmp 내용 확인





3. sulog, authlog
  - su(switch user) 명령어 사용 기록(텍스트 형식)
  - 날짜 및 시간, 성공(+)/실패(-), 사용한 터미널 이름, from 사용자, to 사용자 등의 정보가
    포함

   ※ 분석 포인트!!!
    'su' 명령은 다른 사용자의 ID로 로그인하는 것과 동일한 효과를 가지므로 로그인 정보
    를 기록하는 utmp/wtmp 파일과 연동하여 분석할 필요가 있음
    => su 명령을 통해 관리자 권한을 얻더라도 utmp와 wtmp에 기록이 남지 않음 
    => 일반 사용자로 로그인한 후, 'su' 명령을 통한 권한 상승은 불법적인 접근으로 의심해
        볼 수 있음

그림 3. 'sulog' 파일 내용 확인





4. syslog, secure
  - 사용자 인증과 관련된 로그 및 커널, 데몬들에서 생성된 모든 로그를 기록(텍스트 형식)
  - rsh, rlogin, ftp, finger, telnet, pop3 등에 대한 접속 기록 및 접속 실패 기록 등 시스템의
    보안과 밀접한 관계에 있는 로그
  - 보안사고가 발생할 경우 가장 먼저 백업하여야 하며 가장 먼저 분석을 시도하여 하는
    로그 파일
  - Linux 계열에서는 secure 로그로 남음

   ※ 분석 포인트!!!
    1) 아래 그림과 같이 짧은 시간 안에 여러 서비스에 대한 접속 시도는 multiple 스캔 공격
        으로 판단 가능
    2) 버퍼오버플로우 흔적을 찾을 수 있음

그림 4. 'secure' 로그 파일 안에서의 Multiple 스캔 공격 흔적




 
5. loginlog, failedlogin, btmp
  - 실패한 로그인 시도를 기록(텍스트 형식)
  - 기본적으로 생성되지 않고 수동으로 생성해 주어야 함
  - 사용자ID, 터미널명, 날짜 및 시간
  - Solaris를 포함한 시스템 V 계열의 유닉스에서는 loginlog파일이 사용됨(Text 형식)
  - Linux와 HP-UX에서는 btmp 파일을, AIX에서는 failedlogin 파일을 사용(바이너리 형식)
  - Linux의 경우, 'lastb' 명령을 사용하여 btmp 파일의 내용을 확인 가능

   ※ 분석 포인트!!!
    -
특정 IP로 부터의 다수의 접속 실패는 Brute-Force 공격으로 의심할 수 있음
        =>해당 Brute-Force 공격의 성공 여부는 syslog, messages 파일과의 병행 분석을 통
           해 확인

그림 5. 'loginlog' 파일의 내용 확인




 

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) 웹 서버마다 로그 포멧이 모두 조금씩 다름. 각각의 포멧을 익혀두는 것이 필요.

그림 6. 'access_log' 에 기록된 취약한 CGI 프로그램에 대한 스캔 공격 흔적





8. lastlog
  - 각 사용자가 가장 최근에 로그인한 시간과 접속장소가 기록(바이너리 형식)
  - 동일한 사용자에 대해서는 이전 내용을 overwrite 함
  - wtmp(x), utmp(x) 등 사용자와 관련된 로그와 병행하여 함께 분석하여야 하는 파일
  - IBM AIX의 lastlog의 경우, 텍스트 형식으로 저장됨
  - 'lastlog' 명령을 통해 내용 확인 가능

그림 7. 'lastlog' 명령 출력 결과





9. messages
  - 콘솔 상의 화면에 출력되는 메세지들을 기록(텍스트 형식)
  - timestamp, 호스트명, 프로그램명, 메시지 내용
  - 메세지 내용에는 su 실패에 대한 로그, 특정 데몬이 비활성화된 로그, 부팅시에 발생된
    에러 등 다양한 로그들을 포함
  - syslog와 마찬가지로 보안사고가 발생시에 가장 먼저 분석을 하여야 하는 파일

   ※ 분석 포인트!!!
    1) 취약점을 가진 다양한 서비스들을 미리 파악하여 분석 수행
    2) 로그만을 통해 취약점에 대한 공격의 성공/실패 여부는 알 수 없기 때문에 해당 취약점
       의 특성을 파악하여 직접 확인할 필요가 있음 
    3) 대부분의 버퍼오버플로우 공격의 경우, 아래 그림과 같이 비정상적인 로그가 기록됨  

그림 8. 버퍼오버플로우 공격으로 인한 비정상적인 로그 기록

    4) 스니핑 툴이 설치하여 모니터링을 수행할 경우, 네트워크 카드는 Promiscuous 모드로
      설정되어 있어야 함. 따라서 아래 그림과 같이 'messages' 로그에서 네트워크 카드의 
      Promiscouos 모드 On/Off 시간을 알 수 있음.

그림 9. 'messages' 로그에 기록된 네트워크 카드 Promiscuous 모드 On/Off 시간





10. xferlog
  - 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에는 기록이 남아 있을 때 침입
           을 의심할 수 있음

그림 10. 'xferlog'에 기록된 의심 해킹툴 다운로드 흔적





11. acct, pacct
  - 각 사용자의 수행한 단일 명령어의 모든 정보를 기록(바이너리 형식)
  - 명령어의 아규먼트는 기록되지 않음
  - 'lastcomm'이나 'acctcom' 명령어을 통해 내용 확인 가능 
  - 기본적으로 실행되지 않으면 'startup' 이나 'accton' 명령어로 설정

   ※ 분석 포인트!!!
    1) acct, pacct 로그에는 사용한 명령어만 남으므로 history 로그를 통해 보완한다.
   

그림 11. 'lastcomm' 명령어를 통한 사용 명령어 기록 확인





12. history
  - 각 사용자별로 수행한 명령을 기록(텍스트 형식) 
  - 명령어의 아규먼트를 모두 기록
  - 쉘에 따라 .sh_history, .history, .bash_history 등의 파일로 기록

   ※ 분석 포인트!!!
    1) 로그 파일은 각 사용자의 홈 디렉토리에 숨긴 파일 형태로 저장됨
    2) 백도어와 같이 비정상적으로 루트 쉘을 획득할 경우, 루트의 홈 디렉토리(/root/)가
        아닌 최상위 디렉토리에 로그 파일이 생성됨

그림 12. 'history' 로그에 기록된 lrk4(루트킷) 다운로드 및 설치 흔적





13. sialog
  - 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

Posted by CCIBOMB 김범연

* WebShell


웹쉘(WebShell)은 원격 관리도구인 RAT(Remote Administration Tool) 또는 백도어(Backdoor)라고 불림. 웹쉘은 서버 제어권을 장악하거나 어떠한 스크립트를 실행하거나 자료를 파괴하는 등 모든 기능을 가진 GUI 도구도 있고, 단순히 브라우져의 URL을 통해 명령하고 서버에서 실행하게 하는 단순한 몇줄짜리 코드도 있음. 웹쉘은 서버가 지원하는 어떠한 언어로도 작성될 수 있음


* WSO WebShell

WSO의 경우는 PHP로 작성됨. ApachePHP 기반으로 서버를 운영하고 있다면, WSO와 같은 강력한 PHP 웹쉘에 취약할 수 있음. 웹쉘이 설치되고 나면 서버 관리자와 동일한 권한을 갖게 됨


* WSO 웹쉘 특징(참조 : thehackernews.com)

Authorization for cookies

Server Information

File manager (copy, rename, move, delete, chmod, touch, creating files and folders)

View, hexview, editing, downloading, uploading files

Working with zip archives (packing, unpacking) + compression tar.gz

Console

SQL Manager (MySql, PostgreSql)

Execute PHP code

Working with Strings + hash search online databases

Bindport and back-Connect (Perl)

Brute force FTP, MySQL, PgSQL

Search files, search text in files

Support for * nix-like and Windows systems

Antipoiskovik (check User-Agent, if a search engine then returns 404 error)

You can use AJAX

Small size. The boxed version is 22.8 Kb

Choice of encoding, which employs a shell.

 

* WSO 웹쉘 사용법

아래와 같은 환경에 웹쉘을 업로드 하면, 웹사이트 장악 완료.

Site name abcxyz.com

abcxyz’s root directory /var/www/abvxyz/

Uploaded directory /var/www/abvxyz/uploads/wso.php


* WSO 웹쉘 화면



 

'Information Security > Web Security' 카테고리의 다른 글

WSO WebShell  (0) 2016.06.22
Posted by CCIBOMB 김범연