Linux Artifacts

qwq·2026년 1월 2일

Forensics

목록 보기
4/5
post-thumbnail

계정 정보

/etc/passwd

시스템의 존재하는 사용자의 정보가 있다. 첫 번째 줄 기준으로 :로 구분된 각 내용은 다음과 같다.

  • root(username) - 계정의 이름이다.
  • x(password) - 계정의 비밀번호이다. 원래는 비밀번호도 저장이 되어 있었으나, 지금은 쓰지 않아 "x"로 저장된다.
  • 0(uid) - 계정의 ID이다. 일반 사용자의 계정은 1000부터 할당된다.
  • 0(gid) - 계정이 속한 그룹의 ID이다. 일반 그룹은 1000부터 할당된다.
  • root(comment) - 계정과 관련된 정보이다.
  • /root(home_dir) - 해당 계정의 홈 디렉토리다.
  • /usr/bin/zsh(login_shell) - 계정이 로그인하기 위해 사용하는 프로그램의 경로다.

/etc/shadow

각 사용자의 비밀번호의 hash값이 저장된 파일이다. 현재 사용자의 계정인 "kali"에는 해시된 비밀번호가 저장되어 있고, 패스워드가 설정되지 않으면 ! 기호가, 패스워드 로그인이 불가능한 계정이면 * 기호가 대신 저장된다.

아래는 첫 번째 줄 기준으로 :로 구분된 각 내용이다.

  • root(username) - 계정의 이름이다.
  • !(password) - 위에서 설명했듯이 ! 혹은 *이 대신 있는 경우와 해시된 비밀번호가 있는 경우가 있다. 해시된 비밀번호의 구조는 $<id>$<salt>$<hash> 혹은 $<id>$<param>$<salt>$<hash>이다.
  • 20342(last changed) - 계정의 마지막 비밀번호 변경 시각을 UTC 기준일로부터 일수로 나타낸 값이다.
  • 0(min) - 비밀번호를 변경한 후, 다음에 다시 변경할 때까지 기다려야 하는 일 수이다.
  • 99999(max) - 비밀번호의 유효 기간이다.
  • 7(warning) - 비밀번호가 만료 되기 몇 일 전부터 경고를 띄울지를 저장한다.
  • (inactive) - 비밀번호 만료 후 계정이 비활성화되기까지의 유예 기간이다.
  • (expire) - 계정의 만료일이다.
  • (reserved) - 현재는 거의 쓰이지 않으나 추후에 확장을 위해 남겨놓은 필드다.

/etc/group

각 그룹의 gid와 그룹에 해당되는 계정 이름이 나타난다.

/etc/sudoers

sudo 명령어가 모든 계정에서 통하면 안되기 때문에, sudo 명령어를 통해 관리자 권한을 얻을 수 있는 계정을 명시한 파일이다. 현재는 sudo 그룹에 있는 사용자에 대해서만 허용되며, 위의 /etc/group에서의 사진을 보면 맨 아래줄에 sudo 그룹에 현재 사용자인 kali가 포함되어 있음을 알 수 있다.

시스템 로그

/var/run/utmp

현재 시스템에 로그인하고 있는 사용자의 정보를 담고 있다. who 혹은 w 명령어를 통해 확인할 수 있다.

/var/log/wtmp

위와 반대로 시스템에 로그인 성공한 정보를 담고 있다. last 명령어로 확인할 수 있다.

/var/log/boot.log

Linux 부팅 과정에서 생성되는 로그이다.


다음은 내 Kali Linux에서 찾지 못한 파일이다.

  • /var/log/btmp
    시스템에 로그인 실패한 정보를 담고 있으며, lastb 명령어로 확인할 수 있다.
  • /var/log/lastlog
    각 계정별 마지막 로그인 성공 기록을 담고 있으며, lastlog 명령어로 확인할 수 있다.
  • /var/log/messages
    시스템 전바에 대한 로그를 기록한다.
  • /var/log/auth.log, /var/log/secure - 원격 로그인 및 권한 상승에 대한 내역이 기록된다.
  • /var/log/dmesg - 시스템 부팅 과정에서 생성되는 커널 메시지 로그다.
  • /var/log/cron.log - cron(주기적 반복 작업을 처리하는 스케줄러 프로그램) 작업에 대한 로그다.
  • /var/log/daemon.log - 실행 중인 데몬의 정보가 기록된다.
  • /var/log/user.log - 시스템 내 모든 사용자에 대한 로그가 기록된다.

웹 서버 로그

Linux는 웹 서버로서 주로 사용되는 경우가 많아 /var/log의 하위 경로에 서버가 처리하는 모든 요청을 기록하는 access.log 파일이나 처리중에 발생한 오류를 기록하는 error.log 파일 등이 저장된다.

  • Apache
    Linux 계열에 따라 /var/log/apache2 혹은 /var/log/httpd 하위에 access.log와 error.log 파일이 저장된다.
  • Nginx
    /var/log/nginx 하위에 access.log와 error.log가 저장된다.
  • Tomcat
    /usr/local/tomcat/logs/ 혹은 /var/log/tomcat*/logs/의 하위에 access.log 역할을 하는 localhost_access_log.<YYYY-MM-DD>.txt가 저장된다.

명령어 기록

홈 디렉토리(~)에서 쉘 종류에 따라 .bash_history 혹은 .zsh_history와 같은 파일에 해당 쉘에 입력했던 명령어가 기록되어 있다.

자동 실행 프로그램

cron

crontab 명령어를 사용해 주기적으로 명령어를 자동으로 실행하도록 할 수 있다.
crontab 명령어를 입력한 후 <min\> <hour\> <day\> <mon\> <week\> <comm\> 형식으로 메시지를 입력하며, 시간 필드에는 모든 값을 의미하는 * 기호나 a/b 형식으로 실행 주기, a-b 형식으로 범위를 나타낼 수 있다.

각 작업은 주기에 따라 /etc 디렉토리 하위의 cron.daily ~ cron yearly에 저장된다.

/etc/systemd

이쪽은 부팅 시마다 자동으로 실행되는 프로그램이다. 하위 디렉토리 안의 .service 파일에 자동으로 실행될 내용이 저장되어 있다.

/etc/profile

위는 사용자가 로그인 할때 적용되는 /etc/profile이며, 다음과 같은 로그인/로그아웃 시 자동으로 실행되는 파일이 있다.

  • ~/.profile - 각 사용자의 로그인 시
  • ~/.bash_profile - 각 사용자가 bash 쉘로 로그인 시
  • ~/.bashrc - 각 사용자가 bash 쉘을 열 때
  • ~/.bash_logout - 각 사용자 로그아웃 시
profile
QwQ

0개의 댓글