לדלג לתוכן

2.3 הסלמת הרשאות בלינוקס 2 הרצאה

בדקו האם המכונה היא SELinux
מערכות לינוקס מסוימות משתמשות ב-SELinux (Security-Enhanced Linux), מנגנון אבטחה שמוסיף בקרות גישה מחמירות. אם SELinux פעיל, ייתכן שיהיו מגבלות נוספות על ביצוע פעולות מסוימות, גם למשתמש root.
- בגדול אם אנחנו בSELINUX עלינו לפעול בזהירות יותר, כי יהיה קל יותר לתפוס אותנו.
נסו לקרוא קונפיגורציות שונות על מנת להבין על מה המערכת מנטרת ועל מה לא.

  • הריצו getenforce כדי לבדוק אם SELinux מופעל. הפלט יכול להיות:
    • Enforcing – SELinux פעיל ומיישם את כל המדיניות.
    • Permissive – SELinux פעיל אך רק מתעד הפרות במקום לחסום אותן.
    • Disabled – SELinux כבוי לחלוטין.
  • בדקו את קובץ הקונפיגורציה /etc/selinux/config כדי לראות האם SELinux יופעל לאחר אתחול מחדש (SELINUX=enforcing או SELINUX=permissive).
  • אם SELinux פעיל, נסו לבדוק לוגים של SELinux עם:

    cat /var/log/audit/audit.log | grep AVC
    

    ייתכן שתמצאו שם ניסיונות שנחסמו על ידי SELinux, וניתן לבדוק איך לעקוף אותם.

בדקו האם אנחנו נמצאים בתוך קונטיינר (Docker, LXC, וכו')
אם אתם בתוך קונטיינר, המטרה תהיה לברוח ממנו ולהגיע למערכת ההפעלה הראשית של השרת המארח- בשביל לקבל יותר הרשאות לביצוע פעולות שונות על המחשב.

  • הריצו את הפקודות הבאות כדי לבדוק אם אתם בתוך קונטיינר:

    cat /proc/1/cgroup
    

    אם אתם רואים שורות עם docker, lxc או containerd, סימן שאתם בתוך קונטיינר.

    hostnamectl
    

    אם הפלט מראה מידע מצומצם מאוד או שונה מהרגיל, ייתכן שאתם בתוך קונטיינר.

    ls -lah / | grep ".dockerenv"
    

    אם הקובץ .dockerenv קיים, אתם כנראה בתוך קונטיינר Docker.

  • אם אתם אכן בתוך קונטיינר, חפשו דרכים לברוח ממנו, למשל:

    • בדקו אם יש לכם הרשאות cap_sys_admin, שעשויות לאפשר בריחה.
    • חפשו mounted volumes שמובילים למערכת המארחת.
    • בדקו אם privileged mode מופעל עם cat /proc/self/status | grep CapEff.
    • נסו לנצל קבצים משותפים בין הקונטיינר למארח.

קצת נדבר על linPEAS

הכלי linPEAS (Linux Privilege Escalation Awesome Script) הוא כלי שמטרתו לבצע בדיקות אוטומטיות כדי למצוא חולשות פוטנציאליות שמאפשרות העלאת הרשאות במערכת.
בגדול מסכם לכם בדוח אחד,

  • ניתן להוריד ולהריץ אותו כך:

    wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
    chmod +x linpeas.sh
    ./linpeas.sh
    
  • linPEAS יסרוק את המערכת ויציג מידע שימושי כמו:

    • הרשאות שגויות על קבצים קריטיים.
    • תהליכים מעניינים שרצים עם הרשאות גבוהות.
    • הגדרות מסוכנות ב-sudo, cron ו-systemd.
    • יכולת לנצל capabilities מיוחדות של קבצים.

כאשר אתם מריצים linpease לראשונה עברו על כל הדוח במלואו! הבינו כל דבר בדוח, כנראה תתקלו בדברים שאתם לא מכירים- קראו את הידע החסר לכם.
לאחר שתקראו דוח linpease אחד במלואו, בעתיד יהיה לכם יותר קל להתמצא בו ולדעת מה יותר רלוונטי.

אז מה עושים עם root

יש לנו root? נהדר! עכשיו נוכל להשתמש בעוד פקודות!

  • הריצו cat /etc/shadow כדי להביא את ה-hash של הסיסמאות של כל המשתמשים במערכת – ננסה לשבור אותם באמצעות כלי כמו hashcat או john.
  • הריצו tcpdump כדי להסניף על המכונה ולהבין קצת יותר את הרשת שבה נמצאת המכונה. ניתן לבדוק תעבורה מעניינת כך:
    tcpdump -i eth0 -nn -s0 -v
    
  • השתמשו ב-find כדי לחפש קבצים מעניינים כמו מפתחות SSH פרטיים, קבצי קונפיגורציה, והיסטוריה של פקודות שהורצו בעבר:

find / -name "*.pem" -o -name "*.key" -o -name "id_rsa" 2>/dev/null
find / -type f -iname ".*history" 2>/dev/null

- בזכות הroot נוכל לעשות עוד המון במכונה, לשנות קבצים, להתקין כלי סייבר שונים וכו.
עברו להרצאה הבאה :)

עוד פקודות רשתיות

נעבור על פקודות רשתיות שכדאי לנו להריץ כדי לקבל מידע על רשת המחשבים שאנחנו נמצאים בה.
- להציג את כתובות הIP של המחשב והאינטרפייסים השונים

ip -c a

- להציג את טבלת הניתוב של המחשב
ip -c r

- להציג את הפורטים הפתוחים במחשב
netstat -tulpan

- להציג את הarp cache במחשב
arp -a

- להציג את הcache של הdns
resolvectl show-cache

- להציג רשומות סטטיות של dns
cat /etc/hosts

- להציג רשומות iptables במחשב (להריץ עם root)
iptables -nvL