נקודת הכניסה הראשונית הייתה פגיעות SQL injection באפליקציית Java ציבורית שרצה על Apache Tomcat . תכונת החיפוש האוטומטי (autocomplete) של האפליקציה לא סיננה כראוי קלט משתמש, ואיפשרה לתוקפים להזריק פקודות SQL דרך חיבור JDBC למסד הנתונים של Oracle . כפי שציינו חוקרי Huntress, זו לא הייתה פגיעות חדשה - מתקפות SQL injection קיימות כבר עשרות שנים ונובעות בדרך כלל מטיפול לקוי בקלט משתמש . הכשל בסניטציה של שדה חיפוש פשוט הספיק כדי להתחיל את שרשרת החדירה.
במקום לפרוס קבצי תוכנה זדוניים מסורתיים על השרת שנפרץ, התוקפים השתמשו במכונה הווירטואלית המובנית של Oracle (JVM) ובפקודה CREATE JAVA SOURCE כדי לקמפל ולאחסן את כל ערכת הכלים לתקיפה כאובייקטי Java בתוך מסד הנתונים של Oracle . גישה זו הפכה את הערכה לבלתי נראית למערכות הגנה סטנדרטיות ברמת מערכת ההפעלה, מכיוון ש-EDR ואנטי-וירוס מתמקדים בתהליכים, קבצים בינאריים וקבצים במערכת ההפעלה - הם אינם בוחנים בדרך כלל מחלקות Java ו-wrappers של PL/SQL המאוחסנים בתוך Oracle .
ערכת ה-khunt כללה את הרכיבים הבאים, כל אחד מאוחסן כאובייקט במסד הנתונים:
| רכיב | תפקיד |
|---|---|
| KhuntCmd | טוען את cmd.exe ומבצע פקודות OS שרירותיות על ידי הטמעתן בהצהרות SQL הנשלחות למסד הנתונים |
| KhuntHash | מחלץ שמות משתמש ו-hashes של סיסמאות מטבלאות המשתמשים הפנימיות של Oracle ושומר אותם לקובץ |
| KhuntFS / KhuntFS2 | סיירי קבצים לרישום, קריאה, חיפוש ובדיקת גדלי קבצים במערכת שנפרצה |
| KhuntT | כלי "פינג" פשוט לאישור שהערכה מותקנת ונגישה לפני המשך הפעולה |
| KhuntUnzip | כלי לפתיחת קבצי ZIP |
| khunt_ PL/SQL wrappers* | פרוצדורות wrapper של PL/SQL המשמשות לקריאה למתודות Java הבסיסיות |
התוקפים לא עצרו בגישה ברמת מסד הנתונים. הם השתמשו בערכת khunt כדי לעבור משכבת מסד הנתונים למערכת ההפעלה Windows הבסיסית בתהליך רב-שלבי:
cmd.exe /c whoami, שאישרה שהם פועלים עם הרשאות SYSTEM מלאות על שרת Windows, ובכך קבעו יכולת ביצוע קוד מרחוק (RCE) ממסד הנתונים למערכת ההפעלה .reg.exe ולהעתיק את ה-Registry hives SECURITY ו-SYSTEM, שמרו אותם כ-khuntSECURITY.hiv ו-khuntSYSTEM.hiv בתיקייה F:\Oracle\ .tasklist /svc ושמרו את הפלט כ-khunttasks.txt .esentutl.exe כדי להעתיק את SAM ועותק שני של SECURITY, ושמרו אותם כ-khuntSAM.hiv ו-khunt_SECURITY.hiv .ניתן להשתמש ב-Registry hives שחולצו במצב לא מקוון כדי לחלץ ולפענח hashes של סיסמאות עבור כל חשבונות המשתמש המקומיים במערכת .
חקירת Huntress חשפה מספר נקודות עיוורות קריטיות שאפשרו למתקפה להצליח ולהתחמק מגילוי:
בהתבסס על מתקפה זו, Huntress המליצה על מספר צעדי הגנה :
מתקפה זו משמשת תזכורת חדה לכך שמנועי מסד נתונים עם סביבות תכנות מובנות (כמו JVM של Oracle) יכולים להפוך לפלטפורמות תקיפה חמקניות כאשר הם משולבים עם אפילו שדה קלט אחד לא מאומת. צוותי אבטחה חייבים להרחיב את הניטור שלהם מעבר למערכת ההפעלה כדי לכלול גם את שכבת אובייקטי מסד הנתונים.