[2024.10.21]
01. 운영 체제 종류 및 버전 확인
# uname -a
<옵션>
-a: 모든 정보 출력
-s: 커널 이름 출력
-n: 호스트 이름
-r: 릴리즈 버전
-v: 커널 버전
-m: 하드웨어 이름 출력
-o: 운영 체제 이름 출력
02. 현재 로그인한 사용자 정보 출력
> /var/run/utmp
who
whoami
> root
last <-- 로그인/로그아웃 정보, 시스템 시작/재시작
> /var/log/wtmp
lastlog <-- 사용자의 최종 로그아웃 시간 기록
> /var/log/wtmp
lastb <-- 로그인 실패 시 기록
> /var/log/btmp
# cat secure <-- 원격 접속 정보 기록
# cat messages <-- 가장 많은 정보 기록
로그인한 사용자 정보를 출력하기 위해 텍스트 모드에서 root로 로그인한다
현재 두 개의 루트에서 방금 테스트 모드로 로그인 시
하나의 root가 더 생긴 것을 확인할 수 있다
로그아웃 후 다시 확인 시 정보는 사라지게 된다
root로 하면 헷갈리기 때문에 이번에는 test로 로그인했다
한눈에 알아볼 수 있게 test 사용자 정보가 출력된다
who 명령어의 경우 현재 시스템에 로그인한 사용자 정보를 출력한다
현재로써 자체적으로는 root로 로그인했기 때문에
whoami는 본인을 지칭하는 명령어로 root가 나오게 된다
last 명령어의 경우 로그인/로그아웃 정보, 시스템 시작/재시작을 확인할 수 있다
lastlog의 경우에는 사용자의 최종 로그아웃 시간 기록하기 때문에
로그아웃하고 다시 접속 시 나의 로그아웃 시간이 기록된다
마지막으로 lastb 명령어는 로그인을 실패한 기록이 없어 현재는 이렇게 나타나지만,
lastb의 경우 로그인 실패 정보를 출력하는 명령어다
확인을 위해 일부러 비밀번호를 다르게 적어 로그인을 시도했다
그런 다음 lastb로 확인 시 로그인 실패 기록이 출력되는 걸 확인할 수 있다
이번에는 kali linux의 ssh로 50번 서버인 rocky linux에 접속을 시도했다
확인하기 위해서 한 번은 접속 성공, 한 번은 일부러 실패 후 진행했다
secure 확인 시 falied라는 문구를 확인할 수가 있다
이는 접속에 실패했다는 뜻이며, 성공 시에도 화면과 같이 기록이 남는 걸 확인할 수 있다
마지막으로 log 디렉터리에 messages와 secure가 존재하는 것은 반드시 알고 있어야 된다
[특수 비트]
1) SetUID(4) <-- 보안 취약
2) SetGID(2) <-- 보안 취약
3) Sticky bit(1) <-- 보안성 강화
write: 생성/수정/삭제
file1에는 파일이나 디렉터리에 SetUID, SetGID 권한을 설정하고,
소유자, 그룹, 기타 사용자 모두에게 읽기, 쓰기, 실행 권한을 부여한 것이다
file2에는 소유자에게 읽기, 쓰기, 실행 권한, 그룹에
읽기, 쓰기 권한, 기타 사용자에게 읽기 권한을 부여한 것이다
일반 사용자가 root 권한을 얻어야 되는 이유는
변경된 패스워드를 /etc/shadow 파일에 암호화되어 저장하기 때문이다
shadow 파일은 root 권한이지만, 아무 권한도 없는 상태다
일반 사용자가 변경한 패스워드를 shadow에는 쓸 수가 없다
그렇기 때문에 설정이 되지 않을 곳에 설정되어 있는 것을 찾기 위함이다
7000으로 특수 비트만 설정한다
허가권은 S, U, G, O로 네 개로 분류되어 있는 상태로
7000번으로 설정하면 특수 비트로 설정된다
한마디로 특수 비트를 설정한다는 건
공격자의 입장에서 사용하려고 만들었다고 보면 된다
공격자들은 SetUID와 SetGID를 root 소유자인 곳에 저장한다
03. 특수 파일 점검
> 변조된 파일 검색
# find /home -type f -perm -7000 -ls
일시적으로 root 권한을 획득하는 것이며,
실행할 때만 권한을 획득하는 것을 EUID라고 한다
현재 7000번대의 특수 비트를 설정하였기 때문에 특수 파일을 찾았을 때
root 디렉터리의 file1.txt 파일이 나오게 된다
이번에도 파일을 생성하여 각각의 파일에 권한을 부여한다
7000: SetUID, SetGID, Sticky bit 설정
6000: SetUID, SetGID 설정
4000: SetUID 설정
2000: SetGID 설정
이런 식으로 각각의 파일에 부여된 권한의 파일만 찾을 수 있다
04. 일반 파일 점검
# find /home -type f -perm -100 -ls
이번에도 일반 파일 점검을 위해 파일을 7개 생성하고,
각각의 파일에 100번에서 700번대까지 권한을 부여하고 확인한다
100번의 경우 실행 권한만 부여된 상태의 파일만 찾으므로 file1, 3, 5, 7이 나왔다
200번의 경우에는 쓰기 권한만 부여된 상태의 파일만 찾아서 file2, 3, 6, 7이 나왔다
300번의 경우 실행과 쓰기 권한만 부여된 file3, 7이 나왔다
400번은 읽기 권한만 부여된 상태의 file4, 5, 6, 7이 나왔다
500번의 경우에는 읽기와 실행 권한만 부여된 file5, 7번이 나오게 된다
600번은 읽기와 쓰기 권한만 부여된 상태로 file6, 7이 나오는 것을 볼 수 있다
마지막으로 읽고 쓰고 실행까지 다 되는 권한이 부여된 상태의 file7번까지 모두 확인했다
디렉터리로도 검색하기 위해 디렉터리를 만들어 권한을 부여하고,
d1이라는 디렉터리를 생성하여 디렉터리를 이동시켰다
파일이 잘 점검되는지 확인을 위해 d1 디렉터리에 파일도 세 개 정도 생성한다
find 명령어로 타입을 디렉터리로 설정하여 권한 설정 번호를 입력하면
해당 권한에 맞는 디렉터리가 나오는 것까지 확인할 수 있었다
05. 사용자/그룹 점검
# find /home/d1 -type d -user test -ls
# find /home/d1 -type d -group korea -ls
현재 file1, file2, dir1, dir2만 소유자를 test로 변경시켰다
find 명령어를 통해 test 소유자를 찾을 수 있다
그룹의 경우도 마찬가지다
korea라는 그룹 생성 후 dir1, dir2, file1, file2에 그룹 권한을 korea로 설정했다
찾을 파일과 디렉터리 뒤에 그룹을 찾겠다는 그룹을 입력해 주면,
파일 타입은 korea 그룹의 파일을 찾고 디렉터리 타입은 korea 그룹의 디렉터리를 찾는다
강의 소감
이번 강의에서는 운영 체제 종류 및 버전 확인부터 진행했다
각각의 옵션들로 옵션에 해당하는 값을 출력했고,
포렌식의 강의 취지에 맞게 사용자 정보 출력도 하게 되었다
일반 파일부터 특수 파일의 점검 실습도 진행했다
특수 비트로 권한이 부여된 파일을 찾아내는 것이었다
또한, 파일만이 아니라 사용자 및 그룹까지 찾아낼 수 있었다