В zsh
:
als() {
until [[ $1 = [/.] ]] {argv[1,0]=$1:h;}; ls -ld -- "$@"
}
POSIXly:
als() (
while :; do
case $1 in
[./]) exec ls -ld -- "$@"
esac
set -- "$(dirname -- "$1")" "$@"
done
)
Вам нужно будет определить, что "шаблон" является именно первым (для создания регулярного выражения ). Я не вижу ничего очень ясного. Он всегда заканчивается на .php
, которому предшествуют 8, 10 или 13 символов, которые представляют собой буквы верхнего -или нижнего -регистра, цифры или _
. Кроме того, неясно, например. не всегда есть число. Если бы вы соответствовали этому общему «шаблону», например. с ^[a-zA-Z0-9_]{8}\.php$
, а также для 10 или 13 символов, вы, вероятно, получите много ложных срабатываний.
Вместо этого новые файлы создаются с текущей датой модификации? Если это так, вы можете искать более новые подозрительные файлы, измененные, скажем, после вашей новой конфигурации.
find /path/to/directory -newer /path/to/new_config -regextype egrep -regex '.*/([a-zA-Z0-9_]{8}|[a-zA-Z0-9_]{10}|([a-zA-Z0-9_]{13})\.php'
Одно предостережение заключается в том, что можно изменить дату модификации, используя touch
. Если ваша вредоносная программа делает это, возможно, можно фильтровать по времени доступа -anewer
, статусу -, времени изменения -cnewer
или -newerXY
.
Если все файлы принадлежат определенному пользователю, вы также можете использовать эту информацию для фильтрации. то есть добавить опцию -user apache
.
Это вредоносное ПО для PHP, и я видел это раньше. Вам следует посмотреть видео Бена Декрая под названием «Написание вирусов для развлечения, а не для прибыли» , если вас интересует эта конкретная атака.
Суть моего вклада в следующем. Вместо того, чтобы искать md5 имени файла, что является полностью допустимым подходом, он генерируется примерно так (, хотя и не точно, потому что это всегда $length = 10)
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0;$i < $length;$i++) {
$randomString.= $characters[rand(0, $charactersLength - 1) ];
}
return $randomString. ".php";
}
Вместо этого следует искать все файлы старше определенной даты с помощью
`base64_decode
илиeval(base64_decode(
Это не скажет вам наверняка, какие символы совпадают, а какие нет, но по моему опыту это, скорее всего, будет более правильным.
Я бы хотел.
eval(base64_decode(
i have used below command to achieve
find. -type f -user "user" username | sed -n '/[a-zA-Z0-9_]\{8,\}.php$/p'
It will display all the files whose len is greater than 8