Windows에서 자동 실행 도구는 법의학 조사관에게 매우 유용한 도구로, 의심스러운 시작 실행 파일을 찾고 무해한 실행 파일을 필터링하는 데 도움이 됩니다.
하지만 Linux에서는 그렇게 좋은 일을 할 수 없습니다. 그렇다면 의심스러운 시작 응용 프로그램을 찾을 때 자동 실행을 구현하는 가장 쉬운 방법은 무엇입니까? Linux에도 비슷한 도구가 있나요?
기본적으로 당신이 법의학 조사관이고 Ubuntu와 같은 Linux 시스템이 있고 의심스러운 부팅 실행 파일을 찾으라는 요청을 받았다고 가정해 보겠습니다. 프로세스 속도를 높이기 위해 무엇을 하고 어떤 도구를 사용할 것입니까?
답변1
기본적으로 당신이 법의학 조사관이고 Ubuntu와 같은 Linux 시스템이 있고 의심스러운 부팅 실행 파일을 찾으라는 요청을 받았다고 가정해 보겠습니다. 프로세스 속도를 높이기 위해 무엇을 하고 어떤 도구를 사용할 것입니까?
다음 명령을 사용하여 컴퓨터에서 실행되는 모든 프로그램을 확인할 수 있습니다. 여우탑. 주어진 시간에 생성되는 프로세스의 수가 너무 많기 때문에 출력에는 많은 노이즈가 포함되지만, 여기에서 얻는 목록은 철저해야 합니다. [0]
분석 중인 시스템의 커널에 다음이 있다고 가정합니다.
NETLINK_CONNECTOR
이 기능이 활성화되어 있으며 예를 들어 직접 컴파일하고 배포하는 경우 forkstat 바이너리가 손상되지 않습니다. 이벤트 수신을 얼마나 일찍 시작할지 결정해야 합니다. 유닛 파일을 생성하고 연결합니다.시스템 시작
적절한 순간에 예를 들면 다음과 같습니다 basic.target
.
# cat /etc/systemd/system/forkstat.service
[Unit]
Description=process sniffer
[Service]
ExecStart=/sbin/forkstat
[Install]
WantedBy=basic.target
서비스를 시작하고 관찰 결과를 사용하여 작동하는지 확인합니다
journalctl -f
. 그러면 forkstat 출력이 시스템 로그에 캡처됩니다. 이는 루트 파일 시스템을 사용할 수 있기 전인 부팅 프로세스의 매우 초기 단계이므로 작동하게 하려면forkstat 바이너리는 initrd에서 사용할 수 있어야 합니다.. initrd에 추가하는 방법은 배포판에 따라 다릅니다. Arch의 경우 BINARIES=…
의 행에 추가하기만 하면 됩니다 mkinitcpio.conf
.
서비스를 활성화하고 initrd를 다시 빌드한 후 다시 시작하십시오. 새로 부팅한 후 journalctl -b
다음 명령을 사용하여 캡처된 이벤트를 볼 수 있습니다.
Dec 04 10:12:17 zombo.com systemd[1]: Started process sniffer.
Dec 04 10:12:17 zombo.com forkstat[318]: Time Event PID Info Duration Process
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 exec 321 [/sbin/modprobe -q -- iptable_nat]
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 1 parent /sbin/init
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 322 child /sbin/init
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 exit 313 0 0.610s /usr/sbin/rpc.idmapd
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 2 parent [kthreadd]
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 323 child [kthreadd]
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 265 parent /usr/lib/systemd/systemd-udevd
Dec 04 10:12:17 zombo.com forkstat[318]: 10:12:17 fork 324 child /usr/lib/systemd/systemd-udevd
가장 관심 있는 것은 어떤 프로세스가 어떤 바이너리를 실행했는지 나타내는 parent
및 행입니다. child
나는 당신에게 추천할 것입니다포크스타트 맨페이지
더 알아보기.
참고: 이는 프로세스 생성 활동에 대한 철저한 개요이므로 로그가 상당히 커질 수 있습니다. 생성된 많은 수의 로그 메시지를 수용할 수 있도록 로그 제한을 합리적으로 큰 값으로 설정해야 합니다.
또한 이 출력의 정확성은 신뢰할 수 있는 커널에 따라 달라집니다. 커널 자체가 루트킷 형태로 손상된 것으로 의심되는 경우 먼저 신뢰할 수 있다고 알려진 커널을 배포하는 것이 좋습니다.
[0] 매우 바쁜 시스템에서는 일부 이벤트가 삭제될 수 있습니다. 이는 forkstat에서 사용되는 기본 netlink API의 아티팩트입니다.
답변2
따라서 Windows에서 오는 것은 사물에 대한 관점의 틀입니다. 저도 같은 길을 걸어왔습니다.
가장 먼저 할 일은 Linux가 자동으로 시작되는 방식을 이해하는 것입니다. init/systemd에 대해 알아야 하며, Linux에는 선택할 수 있는 DE(데스크톱 환경)가 여러 개 있다는 점에 유의해야 합니다. 단, 홈 사용자 디렉토리에는 KDE와 같은 몇 가지 일반적인 DE가 있습니다.https://docs.kde.org/trunk5/en/kde-workspace/kcontrol/autostart/index.html
따라서 Linux 파일 시스템으로 작업하고 데이터를 구성하는 것이 얼마나 쉬운지를 고려할 때 CLI를 통한 쿼리는 기본이며 그래픽 클라이언트가 반드시 필요한 것은 아닙니다.
이 내용이 처음이시므로 일부 작업을 자동화할 수 있는 이 프로젝트를 살펴보시기 바랍니다.https://cisofy.com/lynis/< 이 사람은 Linux용 Rootkit Hunter(rkhunter)의 저자입니다. 이 작성자는 훌륭한 도구이자 검토 중에 고려해야 할 다른 사항, 즉 악성 실행 파일입니다.그리고루트킷.