All pastes #901423 Raw Edit

Stuff

public shellscript v1 · immutable
·published 2008-02-12 17:16 UTC
rendered paste body
[swank@licious ~]$ cat /root/rootkit.sh#!/bin/bashARGS=2DEVICE=$1ROOT=$2if [ $# -ne $ARGS ] || ! [ -b $DEVICE ] || ! [ -d $ROOT ]; then   echo   echo "This program will compare files on a block device against what is presented to userland."   echo "This should uncover the vast majority of system files hidden by trojans and rootkits."   echo "Please also look for ramdisks, directories in /dev/shm, metadata, additional mounts, messed environment variables (path,) and changed file sizes."   echo   echo "BUGS: if ls is trojaned but find is not."   echo "BUGS: relying on file count alone is not safe."   echo   echo "USAGE: `basename $0` <block device> <search root>"   echo   exitfi;IFS=$'\n'DIRECTORIES=($(find "$ROOT" -type d -print))### DEBUG#echo#echo ${DIRECTORIES[@]}for DIRECTORY in ${DIRECTORIES[@]}; do   ### DEBUG   #echo   #echo $DIRECTORY   FILES_USERSPACE=( $( cd "$DIRECTORY"; find -xdev -maxdepth 1 | awk -F/ '$2 != "." && $2 != ".." && !/^$/ { for (n = 2;n <= NF;n++) printf("%s/", $n); print ""; }' ) )   FILES_ON_DISK=( $( debugfs "$DEVICE" -R "ls -l \"$DIRECTORY\"" 2>/dev/null | awk '$9 != "." && $9 != ".." && !/^$/ { for (n = 9;n <= NF;n++) printf("%s ", $n); print ""; }' ) )   FILES_USERSPACE_COUNT=${#FILES_USERSPACE[@]}   FILES_ON_DISK_COUNT=${#FILES_ON_DISK[@]}   ### DEBUG   #echo "Userspace: $FILES_USERSPACE_COUNT"   #echo "On Disk:   $FILES_ON_DISK_COUNT"   if   [ $FILES_USERSPACE_COUNT -ne $FILES_ON_DISK_COUNT ]; then      i=0; while IFS='' read -r -d '' entry; do FILES_USERSPACE[i++]="$entry"; done < <(printf '%s\0' "${FILES_USERSPACE[@]}" | sort -z)      i=0; while IFS='' read -r -d '' entry; do FILES_ON_DISK[i++]="$entry"; done < <(printf '%s\0' "${FILES_ON_DISK[@]}" | sort -z)   fi   if   [ $FILES_USERSPACE_COUNT -gt $FILES_ON_DISK_COUNT ]; then      echo "FILE SYSTEM DAMANGE IN $DIRECTORY?"      echo "FILES IN USERSPACE"      echo ${FILES_USERSPACE[@]}      echo "FILES ON DISK"      echo ${FILES_ON_DISK[@]}   elif [ $FILES_USERSPACE_COUNT -lt $FILES_ON_DISK_COUNT ]; then      USERSPACE_POINTER=0      ON_DISK_POINTER=0      while [ "$ON_DISK_POINTER" -lt "$FILES_ON_DISK_COUNT" ]; do         if [ ${FILES_USERSPACE[$USERSPACE_POINTER]} != ${FILES_ON_DISK[$ON_DISK_POINTER]} ]; then            echo "hidden file: $DIRECTORY/${FILES_ON_DISK[$ON_DISK_POINTER]}"            ON_DISK_POINTER=$(( $ON_DISK_POINTER + 1 ))         else            USERSPACE_POINTER=$(( $USERSPACE_POINTER + 1 ))            ON_DISK_POINTER=$(( $ON_DISK_POINTER + 1 ))         fi      done   fidone