Kök Dosya Sistemi - Birinci Bölüm

Nonantiy

Moderasyon Ekibi Lider Yardımcısı
28 Haz 2020
1,961
1,056
Kayseri
İyi günler Türk Hack Team ailesi.
Bugün Linux'un üzerindeki kök dosya sistemini inceliyeceğiz.
5fa66423c18fcdf85af6c318d82bae08ad22.png

Gömülü bir işletim sistemini oluşturan toplamda 4 ana parça vardır. Bunlardan birisi de kök dosya sistemidir. Klasik bir kök dosya sisteminde 3 adet dosya dizin bulunur. Bunlar genelde /lib, /bin ve /etc gibi dizinlerden oluşur. Bu dizinler içerişinde çeşitli program ve betikler bulunur. Tabi benim suanda göstericeğim dosya sistemi klasik bir kök dosya sistemini gibi dosyalar barındırmayacaktır. Bunun yerine 'initramfs' şekilde çok ama çok basit bir şekilde kök dosya sistemi göstericeğim. Size göstereceğim kök dosya sistemi içerisinde tek bir dosya çalışabillir. İlk kök dosya sistemimiz olduğu için bu kadar'ı kafi.


Simdi söyle bir mantık düşünmenizi istiyorum. Kök dosya sistemini ve içindeki hiç bir uygulamaya gerek duymadığımızı ve kendi linux sistemimizin projesine ait bütün ama bütün kodları, C dilini kullanarak kendimiz'in yazdığını düşünüyorum. Peki bu işlemlerin tamamını hatasız bir şekilde gerçekleştirdik diyelim. Bu durumda kendi yazdığımız C kodlarını nasıl derleyip initramfs'ın içerisine aktarıcağız?

Simdi bir sistemin nasıl çalıştığına bakalım. İlk başta sistem açılırken çekirdeğin yüklenmesinin tamamlanması gerekmektedir. Bu işlem sonuç bulduğunda, ardından initramfs dosyası belleüe yüklenir. Ardından sisteme biner yani mount edilir. Ardından çekirden /init programını arar çünkü initramfs sistemleri için ana giriş /init dizinidir.

Eğer initramfs içinde, normal ve tıkırında çalışan bir sistem kurmuş olşaydık, /init programını /sbin/init'e sembolik olarak bağlamış olurduk. /sbin/init program'ı muhtemel sistemimizi hazır hale getirmiş olurdu. Ya da /init'e /bin/sh gibi bir kabuk programını sembolik olarak bağlardık. Bu durumda açılışta ekrana doğrudan prompt gelirdi. Bu örnek uygulamada, init programını kendimiz yapacağız. Başlangıc seviyesinde olduğundan çok kasmaya gerek yok. Oyuzden ekrana mesaj yazdırmak veya 2 tane sayıyı toplamak yeterli olucaktır. Fakat ben ekrana 'iyi günler' yazdıracağım.
unknown.png

Örnek olarak bu kod. Bu dosyanın ismini kokdosyasistemi.c yaptım. Simdi bu programı derliyelim. Bu işlemi aşağıdaki kod ile yapabillirsiniz.
Bash:
arm-linux-gcc -static -o init kokdosyasistemi.c

Bu yaptığımız derleme ile yarım saat dinamik olarak çalışacak bir kütüphanelerle uğraşmak için, tıkır tıkır çalışan bir statik derleme işlemini gerçekleştirdim. Bunun sayesinde gerekli bütün kütüphaneler, kodun altına eklendi. Bunun sayesinde istediğimiz zaman bu kodu çalıştırmak için sadece kendisini taşımamız yeterli olucaktır. Ama görücek olucaksınız ki 3 satırlık kod toplamda 560 bayt uzunluğuna erişmektedir. Bunu kısmak için kodu strip yaparak boyutunu kısabillirsiniz. Eğer bu programı çalıştırmak isterseniz file komut'unu kullanabillirsiniz.


Simdi bir önceki anlatıklarım gömülü bir sistemin içerişinde bulunan en basit sistem olabillirdir. Burada anlatıcaklarım olan ikinci sistem ise busybox destekli klasik fakat son derece küçük bir kök dosya sistemi bulunacaktır. Ayrıca bir açılış betiği bulunacak ve bütün gömülü sistemi adım adım login promptuna taşıyacaktır.


1 inci bölümün sonu. 2 inci bölüm biraz daha detaylı bir anlatım olucağından Linux sistemleri hakkında bilgi edinmeniz tavsiye edilir.


İkinci bölüm en geç haftaya cumaya kadar açılacaktır.
 

Phoenix.py

Katılımcı Üye
9 Tem 2021
568
292
THT
İyi günler Türk Hack Team ailesi.
Bugün Linux'un üzerindeki kök dosya sistemini inceliyeceğiz.
5fa66423c18fcdf85af6c318d82bae08ad22.png

Gömülü bir işletim sistemini oluşturan toplamda 4 ana parça vardır. Bunlardan birisi de kök dosya sistemidir. Klasik bir kök dosya sisteminde 3 adet dosya dizin bulunur. Bunlar genelde /lib, /bin ve /etc gibi dizinlerden oluşur. Bu dizinler içerişinde çeşitli program ve betikler bulunur. Tabi benim suanda göstericeğim dosya sistemi klasik bir kök dosya sistemini gibi dosyalar barındırmayacaktır. Bunun yerine 'initramfs' şekilde çok ama çok basit bir şekilde kök dosya sistemi göstericeğim. Size göstereceğim kök dosya sistemi içerisinde tek bir dosya çalışabillir. İlk kök dosya sistemimiz olduğu için bu kadar'ı kafi.


Simdi söyle bir mantık düşünmenizi istiyorum. Kök dosya sistemini ve içindeki hiç bir uygulamaya gerek duymadığımızı ve kendi linux sistemimizin projesine ait bütün ama bütün kodları, C dilini kullanarak kendimiz'in yazdığını düşünüyorum. Peki bu işlemlerin tamamını hatasız bir şekilde gerçekleştirdik diyelim. Bu durumda kendi yazdığımız C kodlarını nasıl derleyip initramfs'ın içerisine aktarıcağız?

Simdi bir sistemin nasıl çalıştığına bakalım. İlk başta sistem açılırken çekirdeğin yüklenmesinin tamamlanması gerekmektedir. Bu işlem sonuç bulduğunda, ardından initramfs dosyası belleüe yüklenir. Ardından sisteme biner yani mount edilir. Ardından çekirden /init programını arar çünkü initramfs sistemleri için ana giriş /init dizinidir.

Eğer initramfs içinde, normal ve tıkırında çalışan bir sistem kurmuş olşaydık, /init programını /sbin/init'e sembolik olarak bağlamış olurduk. /sbin/init program'ı muhtemel sistemimizi hazır hale getirmiş olurdu. Ya da /init'e /bin/sh gibi bir kabuk programını sembolik olarak bağlardık. Bu durumda açılışta ekrana doğrudan prompt gelirdi. Bu örnek uygulamada, init programını kendimiz yapacağız. Başlangıc seviyesinde olduğundan çok kasmaya gerek yok. Oyuzden ekrana mesaj yazdırmak veya 2 tane sayıyı toplamak yeterli olucaktır. Fakat ben ekrana 'iyi günler' yazdıracağım.
unknown.png

Örnek olarak bu kod. Bu dosyanın ismini kokdosyasistemi.c yaptım. Simdi bu programı derliyelim. Bu işlemi aşağıdaki kod ile yapabillirsiniz.
Bash:
arm-linux-gcc -static -o init kokdosyasistemi.c

Bu yaptığımız derleme ile yarım saat dinamik olarak çalışacak bir kütüphanelerle uğraşmak için, tıkır tıkır çalışan bir statik derleme işlemini gerçekleştirdim. Bunun sayesinde gerekli bütün kütüphaneler, kodun altına eklendi. Bunun sayesinde istediğimiz zaman bu kodu çalıştırmak için sadece kendisini taşımamız yeterli olucaktır. Ama görücek olucaksınız ki 3 satırlık kod toplamda 560 bayt uzunluğuna erişmektedir. Bunu kısmak için kodu strip yaparak boyutunu kısabillirsiniz. Eğer bu programı çalıştırmak isterseniz file komut'unu kullanabillirsiniz.


Simdi bir önceki anlatıklarım gömülü bir sistemin içerişinde bulunan en basit sistem olabillirdir. Burada anlatıcaklarım olan ikinci sistem ise busybox destekli klasik fakat son derece küçük bir kök dosya sistemi bulunacaktır. Ayrıca bir açılış betiği bulunacak ve bütün gömülü sistemi adım adım login promptuna taşıyacaktır.


1 inci bölümün sonu. 2 inci bölüm biraz daha detaylı bir anlatım olucağından Linux sistemleri hakkında bilgi edinmeniz tavsiye edilir.


İkinci bölüm en geç haftaya cumaya kadar açılacaktır.
Elinize sağlık hocam :) ikinci bölümü merak ettim .
 

DARACULA

Üye
9 Haz 2019
118
38
Dünya
İyi günler Türk Hack Team ailesi.
Bugün Linux'un üzerindeki kök dosya sistemini inceliyeceğiz.
5fa66423c18fcdf85af6c318d82bae08ad22.png

Gömülü bir işletim sistemini oluşturan toplamda 4 ana parça vardır. Bunlardan birisi de kök dosya sistemidir. Klasik bir kök dosya sisteminde 3 adet dosya dizin bulunur. Bunlar genelde /lib, /bin ve /etc gibi dizinlerden oluşur. Bu dizinler içerişinde çeşitli program ve betikler bulunur. Tabi benim suanda göstericeğim dosya sistemi klasik bir kök dosya sistemini gibi dosyalar barındırmayacaktır. Bunun yerine 'initramfs' şekilde çok ama çok basit bir şekilde kök dosya sistemi göstericeğim. Size göstereceğim kök dosya sistemi içerisinde tek bir dosya çalışabillir. İlk kök dosya sistemimiz olduğu için bu kadar'ı kafi.


Simdi söyle bir mantık düşünmenizi istiyorum. Kök dosya sistemini ve içindeki hiç bir uygulamaya gerek duymadığımızı ve kendi linux sistemimizin projesine ait bütün ama bütün kodları, C dilini kullanarak kendimiz'in yazdığını düşünüyorum. Peki bu işlemlerin tamamını hatasız bir şekilde gerçekleştirdik diyelim. Bu durumda kendi yazdığımız C kodlarını nasıl derleyip initramfs'ın içerisine aktarıcağız?

Simdi bir sistemin nasıl çalıştığına bakalım. İlk başta sistem açılırken çekirdeğin yüklenmesinin tamamlanması gerekmektedir. Bu işlem sonuç bulduğunda, ardından initramfs dosyası belleüe yüklenir. Ardından sisteme biner yani mount edilir. Ardından çekirden /init programını arar çünkü initramfs sistemleri için ana giriş /init dizinidir.

Eğer initramfs içinde, normal ve tıkırında çalışan bir sistem kurmuş olşaydık, /init programını /sbin/init'e sembolik olarak bağlamış olurduk. /sbin/init program'ı muhtemel sistemimizi hazır hale getirmiş olurdu. Ya da /init'e /bin/sh gibi bir kabuk programını sembolik olarak bağlardık. Bu durumda açılışta ekrana doğrudan prompt gelirdi. Bu örnek uygulamada, init programını kendimiz yapacağız. Başlangıc seviyesinde olduğundan çok kasmaya gerek yok. Oyuzden ekrana mesaj yazdırmak veya 2 tane sayıyı toplamak yeterli olucaktır. Fakat ben ekrana 'iyi günler' yazdıracağım.
unknown.png

Örnek olarak bu kod. Bu dosyanın ismini kokdosyasistemi.c yaptım. Simdi bu programı derliyelim. Bu işlemi aşağıdaki kod ile yapabillirsiniz.
Bash:
arm-linux-gcc -static -o init kokdosyasistemi.c

Bu yaptığımız derleme ile yarım saat dinamik olarak çalışacak bir kütüphanelerle uğraşmak için, tıkır tıkır çalışan bir statik derleme işlemini gerçekleştirdim. Bunun sayesinde gerekli bütün kütüphaneler, kodun altına eklendi. Bunun sayesinde istediğimiz zaman bu kodu çalıştırmak için sadece kendisini taşımamız yeterli olucaktır. Ama görücek olucaksınız ki 3 satırlık kod toplamda 560 bayt uzunluğuna erişmektedir. Bunu kısmak için kodu strip yaparak boyutunu kısabillirsiniz. Eğer bu programı çalıştırmak isterseniz file komut'unu kullanabillirsiniz.


Simdi bir önceki anlatıklarım gömülü bir sistemin içerişinde bulunan en basit sistem olabillirdir. Burada anlatıcaklarım olan ikinci sistem ise busybox destekli klasik fakat son derece küçük bir kök dosya sistemi bulunacaktır. Ayrıca bir açılış betiği bulunacak ve bütün gömülü sistemi adım adım login promptuna taşıyacaktır.


1 inci bölümün sonu. 2 inci bölüm biraz daha detaylı bir anlatım olucağından Linux sistemleri hakkında bilgi edinmeniz tavsiye edilir.


İkinci bölüm en geç haftaya cumaya kadar açılacaktır.
güzel konu devamını bekliyorum :)
 
Ü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.