• XSS.stack #1 – первый литературный журнал от юзеров форума

Дихотомия vs сигнатуры антивируса

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332
Крошечный скрипт в 30 строчек, что используя бинарный поиск перезаписывает разные участки программы, а за тем грузит и запускает на тестовой системе. Так иногда можно найти точное расположение палевного участка и точечно обойти AV.Все что нужно это виртуалка с подопытным антивирусом и конечно же время.
Bash:
#!/bin/bash

bin="$1"
[[ $# -ge 2 ]] && o="$2" || o=0

bytes=$(wc -c $bin | cut -d ' ' -f 1)
test="/tmp/$(basename $bin)"

function test_av(){
  HOST='10.0.0.10'; CREDS='admin:password'; RUN="c:\\$(basename $1) help exit"; OUTPUT='coffee'
  { echo 'use c$'; echo "put $1"; } | smbclient.py "$CREDS@$HOST" > /dev/null
  { echo "$RUN"; echo 'exit'; } | smbexec.py -codec 866 "$CREDS@$HOST" | grep -q "$OUTPUT"
  #{ echo '{"execute": "qmp_capabilities"}'; echo '{"execute": "human-monitor-command", "arguments": {"command-line": "loadvm ready"}}' } | nc 127.0.0.1 4444 # qemu -hda av.qcow2 -qmp tcp:127.0.0.1:4444,server,nowait
  return $?
}

next=("0 $[bytes/2]" "$[bytes/2] $[bytes/2]")
n=0
while [ $n -lt ${#next[@]} ] ; do
  read offset len <<< $(echo ${next[$n]})
  [[ $n -lt $o ]] && { next+=("$[offset] $[len/2]"); next+=("$[offset+len/2] $[len/2]"); ((n++)); continue; }
  cp "$bin" "$test"
  dd if=/dev/zero of="$test" bs=1 count=$len seek=$offset conv=notrunc 2> /dev/null
  echo -ne "[*] test $bin: $offset $len (queue: $n/${#next[@]})\r"
  if test_av "$test"; then
    echo -e "\n[+] $offset $len"
    radiff2 -x "$bin" "$test" | head
  else
    next+=("$[offset] $[len/2]")
    next+=("$[offset+len/2] $[len/2]")
  fi
  ((n++))
done

Автор s0i37
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх