
잠재적으로 악성인 PHP 파일 탐지
_______ __ __ _______
| ___ || |_| || |
| | | || || ___|
| |___| || || |___| Webshell finder,
| ___|| || ___| kiddies hunter,
| | | ||_|| || | website cleaner.
|___| |_| |_||___|
잠재적으로 악성인 PHP 파일을 탐지합니다.
PHP-malware-finder는 난독화/의심스러운 코드와 멀웨어/웹쉘에서 자주 사용되는 PHP 함수를 감지하기 위해 최선을 다합니다.
다음 인코더/난독화 도구/웹쉘 목록도 감지합니다:
물론 PMF를 우회하는 것은 사소한 일이지만, 목적은 정상적인 사고를 가진 사람이 아닌 초보자와 바보를 잡는 것입니다. PMF 전용 맞춤 우회를 보고한다면, 당신은 아마 앞의 두 범주 중 하나(또는 둘 다)에 속할 가능성이 높으며, 위의 문장을 다시 읽어야 합니다.
파일 시스템을 크롤링하고 파일을 YARA 규칙의 집합과 비교하여 감지를 수행합니다. 네, 간단합니다!
해시 기반 접근 방식 대신,
PMF는 가능한 한 시맨틱 패턴을 사용하여
"$_GET 변수가 두 번 디코딩되고, 압축 해제된 후
system과 같은 위험한 함수에 전달됨"과 같은 것을 감지합니다.
git clone https://github.com/jvoisin/php-malware-finder.gitcd php-malware-finder && make또는 마지막 두 단계를 go install github.com/jvoisin/php-malware-finder로 대체하면
PMF를 ${GOROOT}/bin 폴더에 직접 컴파일 및 설치할 수 있습니다.
$ ./php-malware-finder -h
Usage:
php-malware-finder [OPTIONS] [Target]
Application Options:
-r, --rules-dir= 대체 규칙 위치 (기본값: 내장 규칙)
-a, --show-all 일치하는 모든 규칙 표시
-f, --fast YARA 빠른 모드 활성화
-R, --rate-limit= 초당 최대 파일 시스템 작업 수, 제한 없음은 0 (기본값: 0)
-v, --verbose 상세 모드
-w, --workers= 스캔에 사용할 워커 수 (기본값: 32)
-L, --long-lines 긴 줄 확인
-c, --exclude-common 일반 확장자 파일 검사 제외
-i, --exclude-imgs 이미지 파일 검사 제외
-x, --exclude-ext= 제외할 추가 파일 확장자
-u, --update 규칙 업데이트
-V, --version 버전 표시 및 종료
Help Options:
-h, --help 도움말 메시지 표시
또는 yara를 선호한다면:
$ yara -r ./data/php.yar /var/www
YARA 3.4 이상을 사용해야 합니다. 화이트리스트 시스템과 탐욕적 정규식을 위해 해시를 사용하기 때문입니다. 소스에서 YARA를 빌드할 계획이라면 해시 지원을 위해 libssl-dev가 시스템에 설치되어 있어야 합니다.
아, 참고로 make tests로 포괄적인 테스트 스위트를 실행할 수 있습니다.
Go와 libyara 설치를 피하고 싶다면 Docker 이미지를 사용하여
스캔하려는 폴더를 컨테이너의 /data 디렉토리에 마운트하기만 하면 됩니다:
$ docker run --rm -v /folder/to/scan:/data ghcr.io/jvoisin/php-malware-finder
whitelist.yar 파일을 확인하세요. 귀찮다면 generate_whitelist.py 스크립트로 전체 폴더에 대한 화이트리스트를 생성할 수 있습니다.
이유는 다음과 같습니다:
PHP-malware-finder는 GNU Lesser General Public License v3에 따라 라이선스가 부여됩니다.
멋진 YARA 프로젝트는 Apache v2.0 라이선스로 제공됩니다.
패치, 화이트리스트 또는 샘플은 언제든지 환영합니다.