SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Белгилүү болгондой, анклавда аткарылган код өзүнүн функционалдуулугунда олуттуу чектелген. Ал системалык чалууларды жасай албайт. Ал киргизүү/чыгаруу операцияларын аткара албайт. Ал хост тиркемесинин код сегментинин негизги дарегин билбейт. Ал jmp же хост колдонмо кодун чакыра албайт. Ал хост тиркемесин башкарган дарек мейкиндигинин түзүмү жөнүндө эч кандай түшүнүгү жок (мисалы, кайсы барактар ​​картага түшүрүлгөн же ошол беттерде кандай маалыматтар жайгашкан). Ал операциялык тутумдан ага хост тиркемесинин эс тутумунун бир бөлүгүн (мисалы, /proc/pid/maps аркылуу) көрсөтүүнү сурай албайт. Хост тиркемесинин ыктыярдуу эстутум аймагын сокур түрдө окууга болгон жаңылыштык аракеттер, жазуу аракетин айтпаганда да, эртеби-кечпи (кыязы, мурункусу) анклав программасын мажбурлап токтотууга алып келет. Бул анклав сураган виртуалдык дарек мейкиндиги аймагы хост тиркемеси үчүн жеткиликсиз болгондо болот.

Ушундай катаал чындыктарды эске алганда, вирус жазуучу өзүнүн зыяндуу максаттарына жетүү үчүн SGX анклавдарын колдоно алабы?

– Окууга болорун билүү үчүн даректерди текшериңиз
– Жазуу мүмкүнчүлүгү үчүн даректерди текшерүү
– Башкаруу агымын кайра багыттоо үчүн бузук
– Жогоруда саналган үч хакерлер карасанатайга эмне берет?
– Зыян бул хакерлерди ранзовари түзүү үчүн кантип колдонот

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Жогоруда айтылгандардын бардыгына таянып, анклав хост тиркемесин гана тейлей алат жана анклав өзүнүн демилгесин, анын ичинде зыяндуу демилгелерди ишке ашыра албайт деп жалпы кабыл алынган. Бул анклавдардын вирус жазуучулары үчүн практикалык мааниси жок дегенди билдирет. Бул шашылыш божомол SGX коргоосунун ассиметриялуу болушунун себептеринин бири: хост тиркемесинин коду анклав эстутумуна кире албайт, ал эми анклав коду каалаган хост тиркемесинин эстутум дарегин окуп жана жаза алат.

Демек, эгерде зыяндуу анклав коду хост тиркемесинин атынан системалык ыктыярдуу чалууларды жасай алса, анын атынан ыктыярдуу кодду аткарса, хост тиркемесинин эс тутумун сканерлеп, андагы кыянаттык ROP чынжырларын таба алса, анда ал хост тиркемесин толук башкарууну басып алышы мүмкүн. жашыруун режим. Ал колдонуучунун файлдарын уурдап, шифрлеп гана тим болбостон, колдонуучунун атынан да иштей алат. Мисалы, анын атынан фишингдик каттарды жөнөтүңүз же DoS чабуулдарын жасаңыз. Канареяларды чогултуу жана санитардык тазалоо сыяктуу эң заманбап коргоочу механизмдерден коркпостон.

Биз сизге чабуулчулар SGXти өздөрүнүн зыяндуу максаттары үчүн пайдалануу үчүн жогоруда сүрөттөлгөн чектөөлөрдү жеңүү үчүн колдонгон бир нече хакерлерди көрсөтөбүз: ROP чабуулдары. Же хосттун тиркеме процесси катары жамынган ээнбаш кодду аткаруу үчүн (көбүнчө кесепеттүү программа тарабынан колдонулган көңдөй процессине окшош) же даяр кесепеттүү программаны жашыруу үчүн (анын кесепеттүү программасын антивирустар жана башка коргонуу механизмдери тарабынан куугунтуктоодон сактап калуу үчүн).

Аларды окууга болорун билүү үчүн даректерди текшериңиз

Анклав виртуалдык дарек мейкиндигинин кайсы диапазондору хост тиркемеси үчүн жеткиликтүү экенин билбегендиктен жана анклав жеткиликсиз даректи окууга аракет кылганда ишин токтотууга аргасыз болгондуктан, чабуулчу ката кетирүүнүн жолун табуу милдети менен бетме-бет келет. дарек мейкиндигин сабырдуулук менен сканерлеңиз. Жеткиликтүү виртуалдык даректерди картага түшүрүү жолун табыңыз. Жаман адам бул маселени Intelдин TSX технологиясын туура эмес колдонуу менен чечет. TSX терс эффекттеринин бирин колдонот: эгерде эстутумга кирүү функциясы TSX транзакциясында жайгаштырылса, анда жараксыз даректерге жетүүдөн келип чыккан өзгөчөлүктөр операциялык системага жетпестен TSX тарабынан басылат. Эгерде жараксыз эстутум дарегине жетүү аракети жасалса, анклав программасы толугу менен эмес, учурдагы транзакция гана токтотулат. Ошол. TSX анклавга транзакциянын ичиндеги каалаган дарекке коопсуз кирүү мүмкүнчүлүгүн берет - кыйроо коркунучу жок.

эгер көрсөтүлгөн дарек бар хост тиркемесинде TSX транзакциясы көбүнчө ийгиликтүү болот. Сейрек учурларда, ал үзгүлтүккө учуроо (мисалы, пландоочунун үзгүлтүктөрү), кэш чыгаруу же эстутумдун жайгашкан жерин бир эле учурда бир нече процесстер менен өзгөртүү сыяктуу тышкы таасирлерден улам иштебей калышы мүмкүн. Мындай сейрек учурларда, TSX ката кодун кайтарып, ката убактылуу экенин көрсөтөт. Мындай учурларда, сиз жөн гана транзакцияны кайра башташыңыз керек.

эгер көрсөтүлгөн дарек жеткиликсиз хост тиркемесинде, TSX болгон өзгөчөлүктү басат (OS кабарланбайт) жана транзакцияны токтотот. Ката коду анклав кодуна кайтарылып берилет, андыктан транзакция жокко чыгарылганына жооп кайтарат. Бул ката коддору каралып жаткан дарек хост колдонмосу үчүн жеткиликтүү эмес экенин көрсөтүп турат.

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Анклавдын ичинен TSX менен бул манипуляция карасанатай үчүн жагымдуу өзгөчөлүккө ээ: анклавдын коду аткарылып жаткан учурда аппараттык көрсөткүчтөрдүн эсептегичтери жаңыланбагандыктан, анклавдын ичинде аткарылган TSX транзакцияларына көз салуу мүмкүн эмес. Ошентип, TSX менен зыяндуу манипуляция операциялык тутумга таптакыр көрүнбөй калат.

Кошумчалай кетсек, жогорудагы бузукулук эч кандай системалык чалууларга таянбагандыктан, аны жөн гана тутумдук чалууларды бөгөттөө менен аныктоого да, алдын алууга да болбойт; бул, адатта, жумурткага каршы күрөштө оң натыйжа берет.

Кара ниет адам ROP чынжырын түзүүгө ылайыктуу гаджеттерди хост тиркемесинин кодун издөө үчүн жогоруда сүрөттөлгөн бузукту колдонот. Ошол эле учурда ал ар бир даректи текшерүүнүн кереги жок. Виртуалдык дарек мейкиндигинин ар бир барагынан бир даректи иликтөө жетиштүү. Бардык 16 гигабайт эстутумду текшерүү болжол менен 45 мүнөттү талап кылат (Intel i7-6700Kде). Натыйжада, жаман адам ROP чынжырын курууга ылайыктуу аткарылуучу барактардын тизмесин алат.

Жазуу мүмкүнчүлүгү үчүн даректерди текшерүү үчүн бузук

ROP чабуулунун анклавдык версиясын ишке ашыруу үчүн чабуулчу хост тиркемесинин жазыла турган пайдаланылбаган эстутум аймактарын издей алышы керек. Чабуулчу бул эстутумдун жерлерин жасалма стек алкагын жана пайдалуу жүктү (shellcode) инъекциялоо үчүн колдонот. Жыйынтык: зыяндуу анклав хост колдонмосунан эстутумду өзүнө бөлүп берүүнү талап кыла албайт, тескерисинче, хост тиркемеси тарабынан бөлүнгөн эстутумду туура эмес колдоно алат. Эгер, албетте, анклавды кыйратпай, ошондой аймактарды таап алса.

Кара ниет адам бул издөөнү TSXтин дагы бир терс таасирин пайдалануу менен жүргүзөт. Биринчиден, мурункудай эле, ал даректин бар-жоктугун текшерет, андан кийин бул дарекке туура келген барактын жазууга жарамдуулугун текшерет. Бул үчүн жаман адам төмөнкү бузукту колдонот: ал TSX транзакциясында жазуу функциясын орнотот жана ал аяктагандан кийин, бирок ал аяктаганга чейин транзакцияны мажбурлап токтотот (ачык аборт).

TSX транзакциясынын кайтаруу кодун карап, чабуулчу анын жазыла тургандыгын түшүнөт. Эгерде бул "ачык бойдон алдыруу" болсо, кара ниет адам аны аткарса, жазуу ийгиликтүү болмок деп түшүнөт. бет окуу үчүн гана болсо, анда транзакция "ачык токтотуу" дегенден башка ката менен аяктайт.

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

TSXтин бул манипуляциясы карасанатай үчүн жагымдуу болгон дагы бир өзгөчөлүккө ээ (аппараттык көрсөткүчтөрдүн эсептегичтери аркылуу байкоо жүргүзүү мүмкүн эместигинен тышкары): бардык эстутум жазуу буйруктары транзакция ийгиликтүү болгондо гана аткарылат, транзакцияны аягына чыгарууга мажбурлоо пробленген эс тутум клеткасынын иштешин камсыздайт. өзгөрүүсүз бойдон калууда.

Башкаруу агымын кайра багыттоо үчүн бузук

Анклавдан ROP чабуулун жасаганда - салттуу ROP чабуулдарынан айырмаланып - чабуулчу чабуулга алынган программадагы эч кандай мүчүлүштүктөрдү колдонбостон (буфердик толуп же ушуга окшогон нерсе) RIP реестрин башкара алат. Чабуулчу стекте сакталган RIP реестринин маанисин түздөн-түз үстүнө жаза алат. Тактап айтканда, бул реестрдин маанисин өзүнүн ROP чынжыры менен алмаштыра алат.

Бирок, эгерде ROP чынжыр узун болсо, анда хост тиркемесинин стекинин чоң бөлүгүн кайра жазуу маалыматтардын бузулушуна жана программанын күтүлбөгөн жүрүм-турумуна алып келиши мүмкүн. Өз чабуулун тымызын ишке ашырууга умтулган карасанатайдын мындай абалы канааттанбайт. Ошондуктан, ал өзү үчүн жасалма убактылуу стек алкагын түзөт жана анын ичинде ROP чынжырын сактайт. Жасалма стек алкагы кокустан жазыла турган эстутумга жайгаштырылып, чыныгы стек бүтүн бойдон калат.

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Жогоруда саналып өткөн үч хакерлер жаман адамга эмне берет?

(1) Биринчиден, зыяндуу анклав аркылуу даректерди издөө үчүн бузуп, аларды окууга болобу, – хост тиркемесинде кыянаттык ROP гаджеттерин издейт.

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

(2) Андан кийин жазылышы үчүн даректерди текшерүү үчүн бузук, – зыяндуу анклав хост тиркемесинин эс тутумундагы пайдалуу жүктү киргизүү үчүн ылайыктуу аймактарды аныктайт.

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

(3) Андан кийин анклав (1)-кадамда табылган гаджеттерден ROP чынжырын түзөт жана бул чынжырды хост тиркемесинин стекине киргизет.

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

(4) Акыры, хост тиркемеси мурунку кадамда түзүлгөн ROP чынжырына туш болгондо, зыяндуу пайдалуу жүк - хост тиркемесинин артыкчылыктары жана тутумдук чалууларды жасоо мүмкүнчүлүгү менен аткарыла баштайт.

Кара ниет адам ranzowari түзүү үчүн бул хакерлерди кантип колдонот

Хост колдонмосу башкарууну ECALLдардын бири аркылуу анклавга өткөрүп бергенден кийин (бул анклав зыяндуу деп шектенбестен), зыяндуу анклав кодду киргизүү үчүн хост тиркемесинин эс тутумунан бош орун издейт (бош мейкиндиктер катары клеткалардын ырааттуулугун алуу менен) нөлдөр менен толтурулган). Андан кийин аркылуу даректерди издөө үчүн бузуп, аларды окууга болобу, – анклав хост тиркемесинде аткарылуучу барактарды издейт жана учурдагы каталогдо “RANSOM” аттуу жаңы файлды түзгөн ROP чынжырын түзөт (чыныгы чабуулда анклав колдонуучунун учурдагы файлдарын шифрлейт) жана кун билдирүүсүн көрсөтөт. Ошол эле учурда, кабыл алуучу тиркеме анклав жөн эле эки санды кошуп жатат деп ишенет. Бул коддо кандай көрүнөт?

Кабыл алууну жеңилдетүү үчүн, келгиле, аныктамалар аркылуу кээ бир мнемотехниканы киргизели:

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Пайдалуу жүктү аткаргандан кийин хост тиркемесинин нормалдуу иштешин калыбына келтирүү үчүн RSP жана RBP регистрлеринин баштапкы маанилерин сактайбыз:

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Биз ылайыктуу стек алкагын издеп жатабыз ("башкаруу агымын кайра багыттоо үчүн бузук" бөлүмүнөн кодду караңыз).

Ылайыктуу ROP гаджеттерин табуу:

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Пайдалуу жүктү инъекциялоо үчүн жерди табуу:

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Биз ROP чынжырын курабыз:

SGX кесепеттүү программасы: кара ниет адамдар жаңы Intel технологиясын ал арналгандан башка максаттарда кантип пайдаланып жатышат

Зыяндуу программаларга каршы туруу үчүн иштелип чыккан Intelдин SGX технологиясын карама-каршы максаттарга жетүү үчүн кара ниет адамдар ушундайча пайдаланышат.

Source: www.habr.com

Комментарий кошуу