Hướng dẫn php malicious code - mã độc php

Máy quét phần mềm độc hại PHP

Trải qua các thư mục cho các tệp với các tiện ích mở rộng PHP và các tệp kiểm tra theo các quy tắc văn bản hoặc regexp, các quy tắc dựa trên các mẫu tự thu thập và các malwares/webshell có sẵn công khai. Mục tiêu là tìm các tập tin bị nhiễm bệnh và chiến đấu chống lại những đứa trẻ, bởi vì dễ dàng bỏ qua các quy tắc.

Cài đặt thế nào?

Chỉ cần sao chép kho lưu trữ hoặc với trình soạn thảo cài đặt trên toàn cầu composer global require scr34m/php-malware-scanner.

Làm thế nào để sử dụng?

Usage: php scan.php -d 
    -h                   --help               Show this help message
    -d        --directory          Directory for searching
    -e   --extension          File Extension to Scan
    -E                   --scan-everything    Scan all files, with or without extensions
    -i   --ignore             Directory of file to ignore
    -a                   --all-output         Enables --checksum,--comment,--pattern,--time
    -b                   --base64             Scan for base64 encoded PHP keywords
    -m                   --checksum           Display MD5 Hash/Checksum of file
    -c                   --comment            Display comments for matched patterns
    -x                   --extra-check        Adds GoogleBot and htaccess to Scan List
    -l                   --follow-symlink     Follow symlinked directories
    -k                   --hide-ok            Hide results with 'OK' status
    -r                   --hide-err           Hide results with 'ER' status
    -w                   --hide-whitelist     Hide results with 'WL' status
    -n                   --no-color           Disable color mode
    -s                   --no-stop            Continue scanning file after first hit
    -p                   --pattern            Show Patterns next to the file name
    -t                   --time               Show time of last file change
    -L                   --line-number        Display matching pattern line number in file
    -o                   --output-format      Custom defined output format
    -j                   --wordpress-version  Version of wordpress to get md5 signatures
                         --combined-whitelist Combined whitelist
                         --custom-whitelist   Loads whitelist from specified file and merge with existing
                         --disable-stats      Disable statistics output

Bỏ qua đối số có thể được sử dụng nhiều lần và chấp nhận phù hợp với kiểu Glob ex .: "cache*", "??-cache.php" hoặc "/cache", v.v.

Đối số mở rộng mặc định là ".php" và cũng có thể được sử dụng nhiều lần.

  • --base64 là chế độ quét thay thế bỏ qua các tệp mẫu chính và sử dụng một danh sách lớn các từ khóa và chức năng PHP đã được chuyển đổi thành Base64. Chậm hơn và dễ bị dương tính giả, nhưng cung cấp bảo hiểm quét Base64 bổ sung. Các tệp mẫu này được đặt trong Base64_Potype và được lấy từ các từ khóa và chức năng của PHP 7. Không có nhiều phần mở rộng PHP được bao gồm.
  • Cờ --comment sẽ hiển thị nhận xét cuối cùng xuất hiện trong tệp mẫu trước mẫu phù hợp, do đó, việc ghi lại các tệp mẫu là rất quan trọng.

Định dạng đầu ra

Đầu ra mặc định tùy thuộc vào các tham số được chỉ định, nhưng định dạng đầy đủ là " %s %t %m # { %f} %C %p # %l" và sử dụng màu ANSI.

Các biến có thể là:

  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    0 - Chỉ báo phù hợp, các giá trị có thể là OK, er, WL
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    1 - Thời gian thay đổi tệp
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    2 - Tệp giá trị băm MD5
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    3 - Tệp có đường dẫn
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    4 - mẫu
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    5 - Nhận xét mẫu
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    6 - Số dòng mẫu phù hợp

Mô hình

Có ba tệp mẫu chính bao gồm các loại phù hợp mẫu khác nhau. Có một mẫu trên mỗi dòng. Tất cả các dòng trong đó ký tự đầu tiên là "

$ python tools/text2base64.py 'base64_decode'  
YmFzZTY0X2RlY29kZ  
Jhc2U2NF9kZWNvZG  
iYXNlNjRfZGVjb2Rl
7" được coi là một nhận xét và không được sử dụng làm mẫu. Khoảng trắng trong các tập tin mẫu không được sử dụng.

  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    8 - Kết hợp chuỗi thô
  • $ python tools/text2base64.py 'base64_decode'  
    YmFzZTY0X2RlY29kZ  
    Jhc2U2NF9kZWNvZG  
    iYXNlNjRfZGVjb2Rl
    
    9 - Trường hợp kết hợp chuỗi thô không nhạy cảm
  • ________ 20- Kết hợp biểu thức chính quy.

Danh sách trắng

Xem tệp Whitelist.txt cho danh sách băm MD5 được xác định trước. Chỉ có 32 ký tự đầu tiên được sử dụng, phần còn lại của dòng bị bỏ qua, vì vậy hãy thoải mái để lại nhận xét.

WordPress MD5 Sum Whitelisting

Bạn có thể tự động thêm md5sum từ các tệp lõi WordPress bằng cách chỉ định phiên bản là đối số vào - -wordpress -prestion hoặc -j. Thí dụ:

Điều đó sẽ tự động nhận MD5sums từ API WordPress (https://api.wordpress.org/core/checksums/1.0/?version=x.x.x) và thêm nó vào danh sách trắng. Để kiểm tra phiên bản của bạn, chỉ cần kiểm tra tệp WP-includes/phiên bản.php của WordPress của bạn

Kết hợp danh sách trắng

Danh sách này là một cơ sở dữ liệu được tạo trước cho các dự án OpenSource thêm thông tin tại https://scr34m.github.io/php-malware-scanner/ trang web. Kiểm tra máy quét cho cơ sở dữ liệu Hiệu lực và chỉ tải xuống nếu nó khác biệt và tất nhiên khi đối số sử dụng.

Công cụ

text2base64.py

Lấy một chuỗi văn bản làm đầu vào và trả về 3 chuỗi base64 tương đương. Kịch bản Python cần được thực thi từ thiết bị đầu cuối sẽ được sử dụng.

Điều đáng chú ý là sự hiện diện của một trong ba chuỗi đầu ra trong một khối văn bản không đảm bảo 100% rằng chuỗi có mặt trong mã gốc. Đảm bảo rằng nếu chuỗi chủ đề có mặt trong mã gốc, thì một trong ba chuỗi đầu ra sẽ có mặt trong phiên bản Base64.

$ python tools/text2base64.py 'base64_decode'  
YmFzZTY0X2RlY29kZ  
Jhc2U2NF9kZWNvZG  
iYXNlNjRfZGVjb2Rl

Một ví dụ: Sự hiện diện của 'ymfzzty0x2rly29kz' không đảm bảo rằng 'base64_decode' nằm trong mã văn bản đơn giản. Đảm bảo rằng nếu 'base64_decode' có mặt trong mã văn bản đơn giản, thì một trong ba chuỗi base64 này sẽ có mặt. Sự hiện diện của 'YMFZZTY0X2RLY29KZ' trong một khối mã có thể là do 'ASE64_DECOD' nằm trong mã gốc. ote các ký tự cạnh bị thiếu do sai lệch bit và chảy máu nhân vật.
It is guaranteed that IF 'base64_decode' was present in the plain text code, then one of these three base64 strings WILL be present. The presence of 'YmFzZTY0X2RlY29kZ' in a block of code may be because 'ase64_decod' was in the original code.
ote the missing edge characters which is due to bit misalignment and character bleed.

Sử dụng làm thư viện

Scan.php thực hiện kiểm tra, rằng nó được gọi bằng LineLine hay không, vì vậy để sử dụng làm thư viện sử dụng thư mục khác với scan.php IT.



require_once '../scan.php';

$scan = new MalwareScanner();
$scan->setFlagHideWhitelist(true);
$scan->setFlagHideOk(true);
$scan->run('../samples/test');

Tài nguyên

  • PHPSCanner
  • PMF - Công cụ tìm phần mềm độc hại PHP
  • Kiểm tra regexp trực tuyến
  • Mẫu phần mềm độc hại 1
  • Mẫu phần mềm độc hại 2
  • Mẫu phần mềm độc hại 3
  • Mẫu phần mềm độc hại 4

Cấp phép

Máy quét phần mềm độc hại PHP được cấp phép theo giấy phép công cộng GNU V3.