Крошечный скрипт в 30 строчек, что используя бинарный поиск перезаписывает разные участки программы, а за тем грузит и запускает на тестовой системе. Так иногда можно найти точное расположение палевного участка и точечно обойти AV.Все что нужно это виртуалка с подопытным антивирусом и конечно же время.
Автор s0i37
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