별로 깨끗하지 않은 설치 프로그램(Adobe Acrobat Reader DC)이 내 Unix(Mac OS X)의 여러 위치에 많은 파일을 설치했습니다.
이 대규모 설치 프로세스가 시작될 때 설치되었다고 확신하는 참조 파일이 있는데 Application
, 이 설치 프로세스는 2분도 채 걸리지 않았습니다.
그리고:
ls -lc /Application
이 참조 파일의 올바른 생성 시간을 확인할 수 있습니다.
-rwxrwxr-x 3 root wheel 102 Dec 24 18:39 /Application
이 정보를 바탕으로 find
피해 규모를 추정하는 간단한 명령을 작성했습니다.
find / -newermt '12/24/2015 18:37' ! -newermt '12/24/2015 18:41' -ls
이 방법을 사용하면 이 설치 프로그램에서 수정하거나 생성한 모든 파일과 다른 파일만 나열되는지 확인할 수 있습니다.
(비결은 다음과 같습니다. find
처음 5분 범위와 다음 5분 범위에 대해 동일한 작업을 수행하고 비어 있는지 확인합니다. 솔직히 말하면 운이 좋습니다. 내 Unix는조용한이 시간에. )
다음에 유용한 두 날짜를 계산하기 위해 이 방법의 일반적이고 간단한 법의학 스크립트를 어떻게 만들 수 있습니까 find
?
Dec 24 18:39 → 12/24/2015 18:37, 12/24/2015 18:41
답변1
잘못된 설치 프로그램과 정크웨어를 처리하기 위해 이 도구가 필요했기 때문에 다음과 같이 썼습니다.
crater
오작동하는 소프트웨어로 인해 발생한 피해를 평가합니다.
#!/bin/sh
# shell script to search for files created or modified around
# a reference modified file (known impact on the file system)
# default time interval to search is 5 minutes
_cn=`basename $0`
USAGE="Usage: ${_cn} impact_reference_file [delay_around_impact_in_minutes]"
case $# in
1|2)
_ref_file="$1"
;;
*)
echo "${USAGE}" >&2
exit 2
;;
esac
_ref_date=`ls -ldT "${_ref_file}" | awk '{printf ("%s %2s %s %s\n", $6, $7, $8, $9)}'`
_minutes=${2:-5}
_seconds=`expr ${_minutes} \* 60`
_format="+%m/%d/%Y %H:%M:%S"
echo "\treference date:\t${_ref_date}"
# convert reference date in seconds since the epoch
# so as to make arithmetic on it
_ref_date_epoch=`date -j -f "%b %e %T %Y" "${_ref_date}" "+%s"`
_beg_date_epoch=`expr ${_ref_date_epoch} - ${_seconds}`
_end_date_epoch=`expr ${_ref_date_epoch} + ${_seconds} + 1`
_log="/var/log/${_cn}_`date -r ${_ref_date_epoch} +%d-%m-%Y_%H:%M:%S`.log"
echo "\tlog: \t\t${_log}"
# convert back to the format for find
_beg_date=`date -r ${_beg_date_epoch} "${_format}"`
_end_date=`date -r ${_end_date_epoch} "${_format}"`
echo "\tbeginning time:\t${_beg_date}"
echo "\tending time:\t${_end_date}"
find / -xdev -newerct "${_beg_date}" ! -newerct "${_end_date}" -ls >${_log}
awk '{n++; s+=$7}END{printf ("\timpact:\t\t%d files\t\t%d bytes\n", n, s) }' ${_log}
설치하는 방법:
- 위의 소스코드를 붙여넣으세요.
crater.sh
make crater
사용 방법:
/usr/bin/sudo ./crater impact_reference_file delay_around_impact_in_minutes
예:
/usr/bin/sudo ./crater /Applications/Adobe\ Reader.app
Password:
reference date: Dec 29 16:11:56 2015
log: /var/log/crater_29-12-2015_16:11:56.log
beginning time: 12/29/2015 16:06:56
ending time: 12/29/2015 16:16:57
impact: 1518 files 298217339 bytes
호환성:
FreeBSD, MacOS X 및 Linux에서 테스트되었습니다.
답변2
찾는 데 유용한 2개의 날짜를 계산하기 위해 이 방법의 일반적이고 간단한 포렌식 스크립트를 어떻게 만들 수 있습니까?
Dec 24 18:39 → 12/24/2015 18:37, 12/24/2015 18:41
date
명령의 기능을 사용하여 relative time
이 작업을 수행 할 수 있습니다 .
$ date -d"Dec 24 18:39 2 minutes ago" +'%m/%d/%Y %R'
12/24/2015 18:37
그리고
$ date -d"Dec 24 18:39 2 minutes" +'%m/%d/%Y %R'
12/24/2015 18:41
상황에 따라 어떻게 사용할 수 있는지에 대한 예는 다음과 같습니다. 스크립트는 디렉토리, 참조 날짜 및 참조 날짜(시간)의 각 측면에 추가된 분 수를 사용하여 호출됩니다. 호출 방법은 다음과 같습니다.
sh ./myscript / "Dec 24/2015 18:39" 2
스크립트는 다음 명령을 효과적으로 실행합니다.
find "/" -newermt "12/24/2015 18:37" ! -newermt "12/24/2015 18:41" -ls
스크립트:
#!/bin/sh
# usage: $0 directory reference-date minutes
dir=${1:-/}
ref=${2:-Dec 24 18:39}
mins=${3:-2}
format='+%m/%d/%Y %R'
begin=$(date -d"$ref $mins minute ago" "$format")
end=$(date -d"$ref $mins minute" "$format")
echo "# ref='$ref'"
echo "# begin='$begin'"
echo "# end='$end'"
find "$dir" -newermt "$begin" ! -newermt "$end" -ls