Сышышь ты, выходи сюда,
поговорим !

Ўніз па трусінай нары RogueAV і Blackhat SEO (частка 2)

Ў гэтым дзённіку я буду працягваць аналіз PHP скрыпт, які хлопцы RogueAV выкарыстоўваць на сваіх вэб-інтэрфейсе вэб-сервераў. Вы можаце прачытаць першы дзённік на http://isc.sans.edu/diary.html?storyid=9085 ,

Цяпер, калі мы разумеем, як атручэнне пошукавых сістэм працы, мы можам убачыць некаторыя асаблівасці аб PHP скрыпт, які выкарыстоўваюць зламыснікі. Як я ўжо казаў у першым пытанні, сцэнар быў заблытаным, але гэта яшчэ можна было зразумець, што яны робяць. У фрагментах кода я буду паказваць у гэтым і наступных дзённіках былі на самай справе «ўпрыгожаны» і лягчэй чытаць са мной.

Заражэнне ўсяго сайта

Пасля таго, як сайт быў узламаны, зламыснікі ўсталяваць свой сцэнар у любым каталогу, пераважна ў дырэкторыі, якая недаступная непасрэдна з Інтэрнэту, так як яны не павінны атрымаць доступ да яго напрамую.
Наступны крок зламыснікі робяць гэта, каб заразіць ўсе (і я маю на ўвазе ўсё!) PHP файлаў на заражаным сайце. Калі гэта агульны вэб-сайт, а таксама правы доступу не настроена правільна, то яны на самой справе заражаюць абсалютна кожны вэб-сайт, размешчаны на гэтай машыне.

Інфекцыя складаецца з ўвядзення аднаго радка ў пачатку кожнага PHP файла, як паказана ніжэй:

Інфекцыя складаецца з ўвядзення аднаго радка ў пачатку кожнага PHP файла, як паказана ніжэй:

Гэтая лінія (я наўмысна скарочаная) змяшчае невялікі PHP скрыпт, які толькі ў кадоўцы Base64. Так што, калі любая вэб-старонка на заражаным сайце даступная, то атакуючыя PHP скрыпт запускаецца на выкананне першага! Ніжэй дэкадаваць скрыпт:

Ніжэй дэкадаваць скрыпт:

Дэкадаваць частка паказвае, што робіць атакуючыя:

  1. Калі глабальныя зменныя msfn не ўстаноўлены, а функцыя ob_start існуе (гэта стандартная функцыя PHP) наступны код запускаецца на выкананне.
  2. Глабальная пераменная ўстаноўлена, каб паказаць на майстар PHP скрыпт (той, пра які мы гаворым - называецца style.css.php ў дадзеным прыкладзе). Звярніце ўвагу на тое, што гэта можа быць у любым месцы на дыску, пакуль працэс Apache мае доступ да яго.
  3. Калі файл існуе, то ён уключаны. Гэта прыводзіць да таго, майстар PHP скрыпт для выканання і рабіць асноўную апрацоўку. Я разгледжу гэты працэс выканання ў наступных дзённіках.
  4. Калі майстар PHP скрыпт правільна пабег, ён будзе вызначаць функцыі GML і dgobh таму апошняя радок можа выканаць. Гэта тая частка, якая на самай справе адлюстроўвае арыгінальны вэб-сайты і, у выпадку неабходнасці, дадае спасылкі на пошукавыя сістэмы - я пакрываў гэта ў папярэднім дзённіку.

Такім чынам, зламыснікі пераканаліся, што іх сцэнар будзе выконвацца кожны раз, калі іншы PHP скрыпт на скампраметаваных вэб-сайт даступны. Гэта дазваляе ім неабмежаваную свабоду пры выкарыстанні розных URL-адрасоў для атручвання пошукавых сістэм, але і для перанакіравання карыстальнікаў на сайты, якія абслугоўваюць RogueAV (або любога іншага шкоднаснага ПА). Ачыстка вэб-сайт пасля такой інфекцыі не так ужо складана - усё, што вам трэба зрабіць, гэта выдаліць першы радок, але, як і любы інфекцыі або кампрамісу я рэкамендаваў бы вам аднавіць файлы з рэзервовых копій (вы робіце іх, праўда?).

Калі вам цікава, як тыя, хто нападаў ўставіць гэты радок у кожны PHP файл, адказ просты - гэта спецыяльная функцыя ў майстар PHP скрыпт паклапоціцца пра гэта. Яна рэкурсіўна абыходзіць ўсе каталогі, знаходзіць любыя файлы PHP, і калі гэта можа змяніць іх ўстаўляе радок у пачатку. Пасля таго, як тыя, хто нападаў ўсталёўвае майстар PHP скрыпт (style.css.php), усё, што ён павінен зрабіць, гэта выклікаць скрыпт з адпаведным параметрам, як вы можаце бачыць на скрыншоце ніжэй:

php), усё, што ён павінен зрабіць, гэта выклікаць скрыпт з адпаведным параметрам, як вы можаце бачыць на скрыншоце ніжэй:

Гэты інтэрфейс абаронены паролем, таму вы не можаце атрымаць доступ да яго наўпрост, без аўтэнтыфікацыі першага. Для тых, каму цікава, ёсць таксама функцыя, якая ачышчае ўвесь сайт (параметр ДГР = 1, верагодна, выдаленне), але доступ да яго, а таксама, абаронены паролем.

Спалоханы іншых нападнікаў?

Майстар PHP скрыпт складаецца з некалькіх дзесяткаў функцый, якія бяруць на сябе розныя задачы. Сёння я распавяду першую пару ліній, якія атрымліваюць пакараныя, як яны адносна цікавыя. Вы можаце ўбачыць код PHP ніжэй:

Вы можаце ўбачыць код PHP ніжэй:

Гэты код робіць нешта цікавае. Ён бярэ змесціва $ _GET, $ _POST і $ _COOKIE суперглобальные, якія ўтрымліваюць параметры запыту і (вядома ж) утрыманне печыва. Затым код робіць трохі ператасоўкі з утрыманнем, пераўтворыць яго ў ніжні рэгістр і выконвае urldecode на ім. Гэта дазволіць нармалізаваць любое змесціва (напрыклад, 61% будуць ператвораныя ў ніжні рэгістр а).

Нарэшце, код параўноўвае гэты кантэнт з любой з радкоў у радку 12: «base64», «USER_PASS», «падрадок (», «ці ідэнтыфікатар =», «Eval (», «Nutch», «_ карыстальнікаў», 'саюз ўсё »," сярэдзіна ( ". Калі які-небудзь з іх супадаюць, сцэнар завяршаецца неадкладна!

Гэта цікава, як гэта здаецца, што аўтар сцэнарыя спрабаваў рэалізаваць вельмі простую сістэму выяўлення ўварванняў - зьвярніце ўвагу, што яна ўтрымлівае радкі SQL-ін'екцыю або частка PHP коды. Гэта не робіць шмат сэнсу (асабліва адпаведны ін'екцыі SQL), так як майстар PHP скрыпт, напрыклад, не выкарыстоўвае базу дадзеных на ўсіх, так што я цікава, калі гэта было часткай іншай праграмы, што аўтар проста паўторна.

І з гэтым мы прыйшлі да канца другога дзённіка. У наступным дзённіку я пайду праз некаторыя дадатковыя функцыі PHP скрыпту, такія як аўтаматычнае абнаўленне, а таксама адміністратар інтэрфейсу. Вядома, вы заўсёды можаце звязацца з намі, калі ў вас ёсць якія-небудзь пытанні.

-
Боян
INFIGO І.С.

Я буду выкладаць у наступным: Web App Пранікненне Тэставанне і Ethical Hacking - SANS Рыяд красавіка 2019

Html?
Вы робіце іх, праўда?
Спалоханы іншых нападнікаў?