루트가 아닌 악성 코드가 사용자의 비밀번호를 해독하려고 시도하는 경우 어떤 비밀번호 파일이나 메모리의 일부에 액세스해야 합니까? 맬웨어가 비밀번호 파일에 액세스하는지 여부를 모니터링하고 확인하는 방법은 무엇입니까?
답변1
/etc/shadow
대부분의 배포판은 소유자가 소유 root
하고 권한이 설정된 파일 에 사용자 로그인 비밀번호를 저장합니다 0600
. 즉, root
파일은 읽거나 쓸 수만 있습니다.
즉, 일부 배포판에서는 사용자/프로그램이 사용할 "키링"을 제공합니다. 키링은 본질적으로 비밀 저장 데이터베이스 또는 파일입니다. 예를 들어 KDE는 KWallet을 제공하고 Chromium과 같은 프로그램은 KWallet을 사용하여 비밀번호 등을 저장합니다.
이러한 키링은 일반적으로 사용자별로 관리되며 0600 권한으로 저장되므로 키링을 소유한 사용자만 실제로 읽을 수 있습니다. 따라서 루트가 아닌 맬웨어가 걱정된다면 해당 맬웨어가 사용자로 실행되지 않는 한 그 점에서는 꽤 안전합니다.
안타깝게도 각 배포판은 자체 비밀 관리 솔루션을 사용하기 때문에 모니터링할 파일의 전체 목록을 제공할 수 없습니다(예: GNOME3는 KWallet 대신 Seahorse를 사용함). 그러나 나는 일반적으로 다음과 같은 변화를 모니터링합니다.
~/.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
. 이는 로그에서 확인할 수 있습니다. 또한 SSH를 통해 끊임없이 내 루트 비밀번호를 추측하려고 시도하는 임의의 IP를 볼 수도 있습니다.
파일 액세스를 모니터링하기 위해 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 등...)에 대한 바인딩이 있습니다.