파일 액세스 모니터

파일 액세스 모니터

루트가 아닌 악성 코드가 사용자의 비밀번호를 해독하려고 시도하는 경우 어떤 비밀번호 파일 또는 심지어 메모리 부분에 액세스해야 합니까? 맬웨어가 비밀번호 파일에 액세스하는지 어떻게 모니터링하고 알 수 있나요?

답변1

대부분의 배포판은 사용자 로그인 비밀번호를 에 저장합니다 /etc/shadow. 이 파일은 소유하고 권한으로 설정되어 root있습니다 0600. 즉, root이 파일을 읽거나 쓸 수만 있습니다.

즉, 일부 배포판은 사용자/프로그램이 사용할 '키링'을 제공합니다. 키링은 본질적으로 비밀 저장 데이터베이스 또는 파일입니다. 예를 들어 KDE는 KWallet을 제공하고 Chromium과 같은 프로그램은 KWallet을 사용하여 비밀번호 등을 저장합니다.

이러한 키링은 일반적으로 사용자별로 관리되며 0600 권한으로 저장되므로 키링을 소유한 사용자만 실제로 읽을 수 있습니다. 따라서 루트가 아닌 맬웨어가 걱정된다면 해당 맬웨어가 사용자로 실행되지 않는 한 이 점에서는 매우 안전합니다.

안타깝게도 각 배포판은 자체 비밀 관리 솔루션(예: KWallet 대신 Seahorse를 사용하는 GNOME3)을 사용하기 때문에 모니터링할 파일의 전체 목록을 제공할 수 없습니다. 그러나 일반적으로 다음 사항의 변경 사항을 모니터링합니다.

~/.ssh/authorized keys # List of keys accepted during SSH logins
~/.profile             # File sourced by your login shell
~/.bash_profile        # File sourced by your login shell
~/.bashrc              # File sourced by your login shell

모니터링에 관해 설정하는 가장 쉬운 방법은 auditctl.

예를 들어 다음은 bob의 KWallet 데이터베이스 파일에 대한 모든 액세스를 모니터링합니다. (임시 규칙, 에 추가하지 않는 한 재부팅 시 지워짐 /etc/audit/audit.rules)

sudo auditctl -w /home/bob/.local/share/kwalletd/kdewallet.kwl -p rwxa

액세스를 검토하려면 다음을 수행하세요.

sudo less /var/log/audit/audit.log

여기자신만의 규칙을 만드는 데 도움이 될 수 있는 문서입니다.

답변2

루트가 아닌 소프트웨어가 사용자를 변경하려고 하는 경우 다음 lastb명령을 사용하여 이를 검사할 수 있습니다.

$ sudo lastb -a | more
user     pts/2        Mon Aug 10 08:17 - 08:17  (00:00)
root     ssh:notty    Mon Aug 10 08:17 - 08:17  (00:00)     46.148.201.206
root     ssh:notty    Mon Aug 10 08:17 - 08:17  (00:00)     161.35.32.43
root     ssh:notty    Mon Aug 10 08:16 - 08:16  (00:00)     13.68.137.194
root     ssh:notty    Mon Aug 10 08:16 - 08:16  (00:00)     115.196.179.138

user이 경우에는 을(를) 사용하여 실패한 비밀번호로 로그인했습니다 su. 로그를 보면 알 수 있습니다. 또한 임의의 IP가 SSH를 통해 지속적으로 내 루트 비밀번호를 추측하려고 시도하는 것을 볼 수 있습니다.

파일 액세스를 감시하기 위해 inotify 또는 systemd 경로를 설정하려는 경우 감시할 파일은 입니다 /var/log/btmp. lastb이 파일을 사용합니다.

성공적인 로그인을 확인하려면 를 사용하십시오 last. 이 모니터는 다음을 모니터링합니다 /var/log/wtmp.

$ last -a
usera    pts/5        Fri Jul 31 03:00 - 03:17  (00:16)     54.36.10.77
usera    pts/5        Thu Jul 30 21:36 - 21:37  (00:01)     54.36.10.77
usera    pts/5        Wed Jul 29 08:54 - 08:54  (00:00)     127.0.0.1
userb    tty7         Tue Jul 21 11:29   still logged in    :0
userb    tty7         Tue Jul 21 10:59 - 11:29  (00:30)     :0
userb    tty7         Tue Jul 21 07:27 - 10:58  (03:31)     :0
reboot   system boot  Tue Jul 21 09:27   still running      5.7.0-1-amd64
...

답변3

Linux에서는 inotify 프레임워크 및 관련 명령줄 도구를 사용하여 다른 프로세스의 일부 파일 액세스를 감시할 수 있습니다.

참조할 수 있는 매뉴얼 페이지는 다음과 같습니다.

더 정교한 동작을 원한다면 대부분의 스크립팅 언어(Python, Lua 등...)에 대해 이 프레임워크에 대한 바인딩이 있습니다.

관련 정보