Windows Exploiting (Basic Guide - OSCP lvl)
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE)
Вивчайте та практикуйте взлом GCP:
Навчання HackTricks GCP Red Team Expert (GRTE)
Почніть встановлювати службу SLMail
Перезапустіть службу SLMail
Кожного разу, коли вам потрібно перезапустити службу SLMail, ви можете зробити це за допомогою консолі Windows:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-d504c55ec578b643fab30a78d85f7cb6c597e38f%252Fimage%2520%28988%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=110fd794&sv=1)
Дуже базовий шаблон експлоіту на Python
Змінити шрифт у Immunity Debugger
Перейдіть до Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK
Прикріпіть процес до Immunity Debugger:
File --> Attach
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-db465b8ed1eaa187e93e076dfe412f8551e42be2%252Fimage%2520%28869%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=dc4bc526&sv=1)
Та натисніть кнопку START
Надішліть експлойт та перевірте, чи змінено EIP:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-606702899e6bd7748d05767d943117fb6b6ec501%252Fimage%2520%28906%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f8e75ce6&sv=1)
Кожного разу, коли ви припиняєте роботу служби, вам слід перезапустити її, як це вказано на початку цієї сторінки.
Створіть шаблон для зміни EIP
Шаблон повинен бути таким же великим, як буфер, який ви використовували для відключення служби раніше.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-307f8dd503a364e25cccc8148d58ebec274efaf0%252Fimage%2520%28420%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8e60e4ff&sv=1)
Змініть буфер експлойту та встановіть шаблон та запустіть експлойт.
Повинен з'явитися новий збій, але з іншою адресою EIP:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-12af266f17aba5ec3669a26ede2c3768201217ef%252Fimage%2520%28636%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cf4b886d&sv=1)
Перевірте, чи адреса була в вашому шаблоні:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-d0d8fd1cc87a03bf4c89f557c6e28a5af461fdcb%252Fimage%2520%28418%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=65a03c48&sv=1)
Виглядає так, ніби ми можемо змінити EIP в зміщенні 2606 буфера.
Перевірте це, змінивши буфер експлоіту:
З цим буфером EIP, що розбився, повинен вказувати на 42424242 ("BBBB")
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-8eb902501dca8f3a0bf32c590769428d0526d638%252Fimage%2520%28874%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=bc27210c&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-d56598b83f7e6a65b3dee798ed6a2d530e15d648%252Fimage%2520%2892%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f866b0d6&sv=1)
Здається, все працює.
Перевірте наявність місця для Shellcode в стеку
600B повинно бути достатньо для будь-якого потужного shellcode.
Змінимо буфер:
Запустіть новий експлойт та перевірте EBP та довжину корисного shellcode
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-c7a07caac9156d55124ed28560dc925eae1ff3ec%252Fimage%2520%28119%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=6ed40a60&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-7f601f09f24c11d573bc6477fd3cdd99d6288ca1%252Fimage%2520%28879%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=dbe42558&sv=1)
Ви можете побачити, що коли досягається вразливість, EBP вказує на shellcode і ми маємо багато місця для розміщення shellcode тут.
У цьому випадку у нас від 0x0209A128 до 0x0209A2D6 = 430B. Достатньо.
Перевірте на наявність поганих символів
Знову змініть буфер:
Погані символи починаються з 0x01, оскільки 0x00 майже завжди є поганим.
Виконуйте експлоіт повторно з цим новим буфером, видаляючи символи, які виявлено як непотрібні:.
Наприклад:
У цьому випадку ви бачите, що не слід використовувати символ 0x0A (нічого не зберігається в пам'яті, оскільки символ 0x09).
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-7681c85e2c7b962272fed7e5ef45ea30636de6e0%252Fimage%2520%28111%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=66c23f61&sv=1)
У цьому випадку ви бачите, що символ 0x0D уникнуто:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-9a275baae416d7c02336f1288ab8883287a568d5%252Fimage%2520%281098%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=17034ea&sv=1)
Знайдіть JMP ESP як адресу повернення
Використовуючи:
Ви виведете карти пам'яті. Шукайте деякий DLl, який має:
Rebase: False
SafeSEH: False
ASLR: False
NXCompat: False
OS Dll: True
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-84735e3840827ae4681282ffe35238e474a72630%252Fimage%2520%28555%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=59e24f4a&sv=1)
Тепер, всередині цієї пам'яті вам слід знайти деякі байти JMP ESP, щоб це зробити, виконайте:
Потім, якщо знайдено якусь адресу, виберіть таку, яка не містить жодних поганих символів:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2585115637-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FhAv2kYoPrT3n8552GaQU%252Fuploads%252Fgit-blob-ceb0a0f919bc190fe80aab06ba5c9db156149fed%252Fimage%2520%28605%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=9df0c43f&sv=1)
У цьому випадку, наприклад: _0x5f4a358f_
Створення shellcode
Якщо експлойт не працює, але повинен (ви можете побачити за допомогою ImDebg, що досягнуто shellcode), спробуйте створити інші shellcode (msfvenom створить різні shellcode для тих самих параметрів).
Додайте деякі NOPS в початок shellcode та використовуйте його та адресу повернення для JMP ESP, і завершіть експлойт:
Існують shellcode, які перезаписують себе, тому важливо завжди додавати деякі NOPs перед shellcode
Покращення shellcode
Додайте ці параметри:
Вивчайте та практикуйте взлом AWS: Навчання HackTricks AWS Red Team Expert (ARTE)
Вивчайте та практикуйте взлом GCP:
Навчання HackTricks GCP Red Team Expert (GRTE)
Last updated