일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 생활코딩 html
- blkls
- 는 하지마...
- vinetto
- CTF-D
- N0Named
- 24시간의 전사
- 포렌식
- pythonchallenge
- 정보처리기사 필기 합격
- html
- slack space
- disk
- 디지털포렌식 with CTF
- 실기
- 네트워크 보안
- ZIP 파일구조
- 네트워크관리사2급
- Multimeida
- 슬퍼유
- memory
- 윈도우 프로세스 종류
- Window process
- 생활코딩
- 디지털포렌식
- 2022시작
- Multimedia
- ftz
- 윈도우 프로세스
- network
- Today
- Total
ssoL2 TISTORY
리눅스 로그 분석 본문
<account>
- history -> (/home/~/.bash_history)
- group -> (/etc/group)
- last -> (/var/log/wtmp)
- lastlog -> (/var/log/lastlog)
- passwd -> (/etc/passwd)
- shadow -> (/etc/shadow)
- w -> (/var/run/utmp)
<network>
- netstat_an
- lsof
- arp (/proc/net/arp)
<osinfo>
- df
- date
- hostname
- ifconfig
- timezone (/etc/timezone)
- localtime (/etc/localtime -> /usr/share/zoneinfo/Asia/Seoul)
- uname
<process>
- crontab (/etc/crontab)
- ipcs
- lsmod (/proc/moduls)
- ps
- pstree
<weblog>
- access.log (/var/log/httpd-aceess.log or /var/log/apache2/access.log)
- history -> (/home/~/.bash_history)
- group -> (/etc/group)
- last -> (/var/log/wtmp)
- lastlog -> (/var/log/lastlog)
- passwd -> (/etc/passwd)
- shadow -> (/etc/shadow)
- w -> (/var/run/utmp)
1. history (/home/~/.bash_history)
- 입력했던 명령어를 "홈 디렉터리"에 있는 [.bash_history] 파일에 저장한다.
- [history] 명령어 -> [자신이 사용한 명령어]
- [-c] 옵션으로 히스토리를 모두 삭제할 수 있고, 파이프와 [grep]으로 필터링할 수 있다.
2. group (/etc/group)
- /etc/group은 그룹이 등록되어 있는 파일이다.
- [cat /etc/group] 명령어 -> [Groupname : Group password : Group ID : Group members]
- 마지막 항목인 <그룹에 속한 사용자 이름(Group members)> 은 생략되는 경우도 많기 때문에 사용자가 없다고 오해하기 쉽다.
- 중요한 것은 "User"는 반드시 특정 그룹에 소속되어야 한다.
3. last (/var/log/wtmp)
- 시스템 재부팅 정보와 "모든 사용자"의 로그인 정보를 출력한다.
- [last] 명령어 -> [Username Port From 연결한 시간]
- [-R] 옵션으로 IP주소 정보를 제외한 나머지 정보를 출력하고, [-d] 옵션으로 외부 접속 정보만을 확인한다.
- /var/log/wtmp 파일을 참조하여 출력되며, 해당 파일이 존재하지 않으면 접속 정보를 기록하지 않기 때문에 직접 파일을 생성해주어야 한다.
- /var/log/wtmp는 사용자들의 로그인아웃 정보와 시스템 관련 정보를 기록한다.
- /var/log/wtmp는 바이너리 파일로 저장되기 때문에 cat 명령어와 vi 명령어로 확인할 수 없다.
4. lastlog (/var/log/lastlog)
- 전체 계정에 대한 "마지막 접속 정보"만을 출력한다.
- [lastlog] 명령어 -> [Username Port From Latest]
- /etc/passwd 에 정의되어 있는 모든 사용자들의 마지막 접속 정보를 확인하고, /var/log/lastlog 파일을 참조하여 마지막 접속 정보를 출력한다.
- /var/log/lastlog는 바이너리 파일로 저장되기 때문에 cat 명령어와 vi 명령어로 확인할 수 없다.
- /usr/include/lastlog.h에서 정의된 포맷으로 저장되며 lastlog.h는 /usr/include/utmp.h에 지정된 포맷을 사용한다.
5. passwd (/etc/passwd)
- 계정과 관련된 정보가 기록되며, User 계정 뿐만 아니라 root 계정, 데몬 계정 등이 기록된다.
- [cat /etc/passwd] 명령어 -> [Username : password : UID : GID : GECOS : HomeDirectory : LoginShell]
- 보안상의 이유로 <password> 항목은 'x'로 두고, /etc/shadow 파일에 암호화 저장된다.
- <CECOS>는 사용자에 대한 여러가지 정보를 입력하는 곳으로 필수항목이 아니다.
- <LoginShell>은 로그인 시 Default로 사용되는 Shell이다.
6. shadow (/etc/shadow)
- 사용자의 계정과 패스워드 정보가 기록된다.
- 패스워드(password)는 "암호화" 되어 기록된다.
- [cat /etc/shadow] 명령어 -> [Username : password : 파일 최종수정날짜 : password 변경 최소일 : password 변경 최대일 : password 만료 경고 기간 : 계정 만료 기간 : 예약 필드]
7. w (/var/run/utmp)
- "서버"에 접속한 사용자의 접속 정보 및 작업 정보 내용을 확인한다.
- /var/run/utmp은 "현재 로그인한 상태 정보"를 담고 있는 로그파일로, 바이너리로 저장되어 있다.
- [w] 명령어로 /var/run/utmp를 확인할 수 있다.
- [w] 명령어
- 서버의 현재 시각 정보
- 서버의 부팅한 이후의 시스템 작동 시간
- 서버 접속자의 총 수
- 접속사별 서버 평균 부하율 정보
- 접속사별 서버 접속 계정 이름
- 접속사별 접속 TTY 명
- 접속사별 접속한 IP
- 접속사별 로그인 시각
- 접속사별 CPU 사용 정보(IDLE, JCPU, PCPU)
- 접속사별 현재 사용 명령어
* IDLE : 최종 명령 수행 후의 대기 시간을 출력한다.
* JCPU : w 명령어를 통해 볼 수 있는 결과 중 TTY 필드에서 사용하는 장치에 사용하는 모든 프로세스의 CPU 사용시간을 출력한다. 이때 지난 background에서 실행되는 시간은 제외하며, 현재 background에 실행되는 시간만 포함한다.
* PCPU : w 명령어를 통해 볼 수 있는 결과 중 what 필드에 나타나는 프로세스의 CPU 총 사용시간을 출력한다.
- netstat_an
- lsof
- arp (/proc/net/arp)
1. netstat
- 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구
- [-a] 옵션은 모든 네트워크 상태를 보여주며, [-n] 옵션은 ip와 port를 출력한다.
- [netstat -an] 명령어를 자주 사용한다.
- [Proto] - 프로토콜 종류
- [Recv-Q] - 받는 큐 (받는 패킷의 socket buffer size)
- [Send-Q] - 보내는 큐 (보내는 패킷의 socket buffer size)
- [Local Address] - 내부주소 (ip:포트번호)
- [Foreign Address] - 외부주소
- [State] - 상태정보(1. LISTEN, 2. ESTABLISHED, 3. TIME_WAIT, 4. CLOSED)
2. lsof
- "LiSt Open File"의 약자로 시스템에서 열린 파일 목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일의 종류 등 상세한 정보를 출력한다.
- [lsof] 명령어
- [COMMAND] - 실행한 명령어
- [PID] - process ID
- [USER] - USER
- [FD] - File Descriptor로 파일의 종류이다. (1. cwd - current working directory, 2. rtd : root directory 3. mem : memory-mapped file, 4. txt - program text (code and data))
- [TYPE] - 파일 종류이다. (1. DIR - DIRectory, 2. CHR - CHRacter spcical file 4. REG - Regular file 5. unix - 유닉스 도메인 소켓)
- [DEVICE] - 장치 번호
- [SIZE/OFF] - 파일의 크기나 오프셋
- [NODE] - 노드 번호
- [NAME] - 파일명
- [lsof 특정 파일] 명령어로 특정 파일을 사용하고 있는 프로세스의 자세한 정보를 볼 수 있다.
- [lsof -i] 명령어는 가장 많이 쓰는 명령어로, TCP/UDP 소켓을 사용하는 프로세스를 확인할 수 있다.
3. arp (/proc/net/arp)
- ARP 테이블로 IP주소에 대한 MAC주소를 확인할 수 있다.
- [arp] 명령어 -> [Address HWtype HWaddress Flags Mask Iface]
- Subnet의 ARP 정보는 연결 효율을 높이기 위해 /proc/net/arp 에 저장된다.
- df
- date
- hostname
- ifconfig
- timezone (/etc/timezone)
- localtime (/etc/localtime -> /usr/share/zoneinfo/Asia/Seoul)
- uname
1. df
- 리눅스 시스템 전체의 (마운트 된) 디스크 사용량을 확인할 수 있다.
- [df] 명령어 -> [Filesystem 1K-blocks Used Available Use% Mounted on]
- [-k] 옵션으로 킬로바이트 단위로 현재 남은 용량을 확인할 수 있다.
2. date
- 현재 서버 날짜와 시간이 출력된다.
- [data] 명령어 -> [요일 월 일 시간 년도]
3. hostname
- 시스템의 이름을 확인하거나 바꿀 때 사용하는 명령어이다.
- [hostname] 명렁어 -> [host명]
4. ifconfig
- "InterFace CONFIGuration"의 약자로 리눅스의 네트워크 관리를 위한 인터페이스 구성 유틸리티이다.
- 옵션을 사용하지 않으면 활성화된 인터페이스의 세부 사항을 표시한다.
- [-a] 옵션으로 비활성화된 네트워크 인터페이스까지 볼 수 있다.
- [eth0] - 네트워크 인터페이스
- [Link encap] - 전송할 때 캡슐화되는 방식 (Ethernet : 이더넷 프레임으로 캡슐화)
- [HWaddr] - 하드웨어 주소인 MAC Address
- [inet addr] - 할당된 IPv4 Address
- [Bcast] - 할당된 Broadcast Address
- [Mask] - 할당된 Subnet Mask
- [inet6 addr] - 할당된 IPv6 Address
- [Scope] - 주소가 유효한 범위 (Link : 로컬 서브넷 내에서 유효, Global : 서브넷 밖의 인터넷에서도 통신 가능)
- [UP] - 현재 활성화된 상태이다.
- [BROADCAST] - 브로드캐스트를 지원한다.
- [RUNNING] - 현재 이터페이스가 실행 중인 상태이ㅏㄷ.
- [MULTIAST] - 멀티캐스트를 지원한다.
- [MTU] - "Maximum Transfer Unit"으로 최대 전송 단위로, 한 번에 보낼 수 있는 최대 네트워크 데이터 크기이다.
- [Metric] - 우선순위를 나타내며 낮을수록 우선순위가 높음.(0부터 시작)
- [RX packets] - 부팅 후 현재까지 "받은" 패킷 수
- [TX packets] - 부팅후 현재까지 "보낸" 패킷 수
- [collisions] - 네트워킹에서 패킷 충돌이 일어난 패킷 수
- [txqueuelen] - Transmission queue의 크기
- [RX bytes, TX bytes] - RX bytes는 받은 데이터의 총 크기를, TX bytes는 보낸 데이터의 총 크기를 의미한다.
- [Interrupt] - 패킷이 수신될 때 발생하는 인터럽트 번호
- [Base address] - 인터럽트에 대한 핸들러 주소
5. timezone (/etc/timezone)
- 서버 시간대를 확인할 수 있다.
- [cat /etc/timezone] 명령어로 서버의 시간대를 확인할 수 있다.
6. localtime (/etc/localtime -> /usr/share/zoneinfo/Asia/Seoul)
- 서버를 어느 나라의 시간대로 운영할 것이지 설정한다.
- 시스템 시간, 로그 저장시간, 크론 도는 시간에 모두 적용된다.
- /etc/localtime 은 "어셈블리"로 되어있어 분석하기는 어렵다.
- /etc/localtime 은 /usr/share/zoneinfo/Asia/Seoul 에 링크되어 있다.
- [ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime] 명령어로 상해시간으로 변경도 가능하다.
7. uname
- 시스템의 정보를 확인한다.
- 시스템의 이름, 사용중인 운영체제와 버전, 호스트명, 하드웨어 정보 등을 확인할 수 있다.
- [-a] 옵션으로 시스템의 모든 정보를 출력한다.
- [Linux] - 운영체제 종류
- [ubuntu] - hostname
- [2.6.32-38-generic-pae] - 운영체제의 버전
- [i686] - 하드웨어 플랫폼
- [GNU/Linux] - 현재 운영체제
- crontab
- ipcs
- lsmod (/proc/moduls)
- ps
- pstree
가장 많이 정보가 나오는 항목일 수 있음.
1. crontab (/etc/crontab)
- 관리자 root가 직접 지정한 작업들을 설정하며, 임의의 사용자 권한으로 실행할 수 있다.
- 시스템 관련 작업들을 등록해 사용한다.
- [cat /etc/crontab] 명령어로 확인 가능하다.
- [run-parts] 명령어는 특정 디렉토리내에 스크립트나 프로그램을 실행하는 명령어
- 특정 m h dom mon dow에 user 권한으로 command 명령하는 작업을 반복한다.
2. ipcs
- 시스템에서 사용중인 콜 프로세스의 ipc와 관련된 정보를 출력한다.
- ipc는 "Inter-Process Communication"의 약자로 프로세스간 통신을 뜻한다.
- [ipcs -u] 명령어로 간추린 정보를 같이 출력한다.
3. lsmod (/proc/moduls)
- 리눅스 커널에 있는 모듈 module의 정보를 보여준다.
- 리눅스 커널 모듈은 시스템을 리부팅할 필요 없이 활성화될 수 있고 커널에 삽입될 수 있다.
- /proc/moduls 파일의 내용을 포맷한다.
- [lsmod] 명령어를 사용한다.
- [Module] - 모듈 파일의 이름
- [Size] - 상주모듈에 의해서 사용되는 메모리의 양 (byte 단위)
- [Used by] - 사용되고 있는 모듈의 인스턴스를 표현하는 숫자이다. (0이라면 현재 사용X, 텍스트는 모듈의 정보)
4. ps
- 현재 실행중인 "프로세스" 목록과 상태를 보여준다.
- [-a] 옵션으로 세션 리더(일반적으로 로그인 셸)을 제외하고 데몬 프로세스처럼 터미널에 종속되지 않은 모든 프로세스를 출력한다.
- [-e] 옵션으로 커널 프로세스를 제외한 모든 프로세스를 출력한다.
- [-f] 옵션으로 Full format으로 출력하며, 유닉스 스타일로 UID, PID, PPID 등이 함께 표시한다.
- [ps -ef] 명령어나 [ps -eaf] 명령어를 자주 사용한다.
- [UID] - SYSTEM V계열의 프로세스 소유자의 이름
- [PID] - 프로세스 ID
- [PPID] - 부모 프로세스 ID
- [C] - 짧은 기간 동안의 CPU 사용률 (C: Sys V, CP: BSD)
- [STIME] - 프로세스가 시작된 시간 또는 날짜
- [TTY] - 프로세스와 연결된 터미널
- [TIME] - 총 CPU 사용 시간
- [CMD] - 프로세스의 실행 명령행
5. pstree
- 프로세스의 상관관계(부모-자식)를 트리 형태로 출력한다.
- [pstree] 명령어를 사용하고, [-a] 옵션으로 지정한 인수까지 출력된다. (모양도 더 이쁨)
- access.log
1. access.log (/var/log/httpd-aceess.log or /var/log/apache2/access.log)
- 외부에서의 접근이 발생하면 apache 웹서버에서 설정한 경로에 access log가 파일로 생성되거나 있는 파일에 추가된다.
- 해당 파일에는 한 중당 하나의 엑세스 정보가 남게 된다.
- /var/log/httpd-aceess.log or /var/log/apache2/access.log
- 원격 호스트 IP 주소 (요청자)
- 요청 시간
- 요청 내용
- HTTP 상태 코드
- HTTP 헤더를 제외한 전송 바이트 수
- 리퍼러(referrer)
< 참조 >
history -> jhnyang.tistory.com/306
group -> www.leafcats.com/132
last, lastlog -> m.blog.naver.com/PostView.nhn?blogId=dudwo567890&logNo=130153163350&proxyReferer=https:%2F%2Fwww.google.com%2F
passwd, shadow -> seoulforest.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-study-1
netstat -> startingpitcher.tistory.com/12
lsof -> www.lesstif.com/system-admin/lsof-20776078.html
arp -> pchero21.com/?p=640
/etc/crontab 도움될 사이트 -> ehfgk78.github.io/2018/01/19/about_Linux/
lsmod -> blankspace-dev.tistory.com/293
localtime -> antimidal.tistory.com/15
uname -> yoonwould.tistory.com/124
'sec > forensic' 카테고리의 다른 글
내가 찾은 악성코드 (0) | 2021.03.07 |
---|---|
volatility 메모리 분석 (0) | 2021.03.03 |
jpg 파일 구조 속 썸네일 (0) | 2021.02.21 |
웨이브(.wav) 파일 분석 (0) | 2021.02.16 |
Audacity 다운로드 및 사용법 (0) | 2021.02.16 |