
Turkish: 
Geçmiş videolarda CPU'nun nasıl olduğunu öğrendik
çalışır, assembler nasıl okunur ve tersine çevrilir
basit bir programın işlevselliğini mühendis.
Yaklaşan videolarda biraz gitmek istiyorum
biraz daha derin ve nasıl yararlanabileceğimizi keşfedin
yozlaşma yeteneğine sahip olduğumuzda bir program
bellek.
Bu ilk video nasıl yapılır hakkında daha fazla olacak
kurulum ve herşeyin çalışmasını sağlamak. Yani yapabiliriz
sonraki videolarda teknik bölüme odaklanın.
Bu videonun başlığı
“Stack Smashing” adlı ünlü phrack makalesi
Eğlence ve Kar İçin ”1996'dan.
o zamandan beri birçok şey değişti.
Yine de, önce temel bilgileri öğrenmemiz gerekiyor.
Modern tekniklere bir bakmadan önce.
Sömürünün zaman çizelgesini takip edeceğiz
teknik keşif ve azaltma girişimleri.
DEP veya ASLR gibi, sadece iki isim.
Bir sonraki videonun temeli olarak, ben

English: 
In past videos we have learned how the CPU
works, how to read assembler and how to reverse
engineer the functionality of a simple program.
In the upcoming videos I want to go a little
bit deeper and explore how we can exploit
a program when we have the ability to corrupt
memory.
This first video will be more about how to
setup and get everything running.
So we can focus on the technical part in the
next videos.
The title of this video is inspired by the
famous phrack article “Smashing The Stack
For Fun And Profit” from 1996.
You can imagine that a lot of stuff has changed
since then.
Though, we first have to learn about the basics,
before we can have a look at modern techniques.
We will kind of follow the timeline of exploitation
technique discovery and attempted mitigations.
Like DEP or ASLR, just to name two.

English: 
As basis for the next couple of videos, I
will use challenges included in the Linux
images provided by exploit-exercises.com.
This allows you to set up this system as well,
which I highly recommend.
With protostar you will start with simple
memory corruption and modification, function
redirection, and finally executing custom
shellcode.
In order to make this as easy as possible
to introduce, ASLR and Non-Executable memory
has been disabled.
So first download the protostar .iso and boot
from it in the VMWare Player.
As you can see it doesn’t start with a nice
graphical user-interface like our Ubuntu system
does.
But don’t panic, you learned how to use
the command-line from the very first episode.
Now, I will use this moment to introduce you
to `ssh`, which stands for secure shell and
is a program that allows us to connect to
a system over a network, that has an ssh server
running.
This would be the kind of access you get when
you have to administrate servers that run

Turkish: 
Linux dahil zorlukları kullanacak
exploit-exercises.com tarafından sağlanmıştır.
Bu, bu sistemi de ayarlamanıza izin verir,
Hangi tavsiye ederim.
Protostar ile basit başlayacaksınız
hafızanın bozulması ve değiştirilmesi, işlev
yönlendirme ve nihayet özel uygulama
kabuk kodu.
Bunu mümkün olduğunca kolaylaştırmak için
tanıtmak, ASLR ve Çalıştırılamaz bellek
devre dışı bırakıldı.
İlk önce protostar'ı indirin.
ondan VMWare Player'da. Gördüğün gibi
güzel bir grafik kullanıcı arayüzü ile başlamıyor
Ubuntu sistemimizin yaptığı gibi. Ama panik yapma
komut satırının nasıl kullanılacağını öğrendin
ilk bölüm.
Şimdi, bu anı size tanıtmak için kullanacağım
ssh, hangi güvenli kabuk anlamına gelir ve
bağlanmamızı sağlayan bir programdır
ssh sunucusu olan ağ üzerinden bir sistem
çalışan. Bu erişim türü olurdu
sunucuları yönetmeniz gerektiğinde elde edersiniz

Turkish: 
örneğin bir web sitesi çalıştırmak. İşte
neden sana emir verdim
ilk bölümdeki satır, çünkü sen
gerçekten nasıl kullanılacağını bilmek zorunda.
Ayrıca pencereleri bir pencere olarak çalıştırdığımı da söyleyebilirsiniz.
ana işletim sistemi Sanırım bundan bahsetmedim
önce, ama burada ana nedeni, bu
İnsanların çoğunluğunun başladığını hayal ediyorum
Windows’ta en iyi yol bu demektir.
daha fazla insana ulaşmak için. Olmak istemiyoruz
Diğer pek çok parça gibi
toplumlar. En azından benim için, hack aktarıyor
Açık olması ve bilgiyi paylaşması için bir ruh.
Bu yüzden PuTTY'yi indirmek zorunda kaldım.
Windows şimdi, hangi için bir Windows istemcisi
SSH.
Bu makineye bağlanmak için kullanmak için biz var
IP adresini bulmak için.
Protostar için kullanıcı adı ve şifre
görüntü sadece “kullanıcı” dır. Yani giriş yapmak için bunu kullanın.
Ve sonra 'ip addr` komutunu çalıştırın.
atanan IP'yi bulun ve kopyalayın.
macun, bu oturumu kaydedin ve Aç'a basın. Sen
tekrar giriş yapmalıyım, ancak bu çok daha iyi

English: 
for example a website.
That’s the reason why I introduced you to
the command line in the very first episode,
because you really really have to know how
to use it.
You can also tell that I run windows as a
host OS.
I think I haven’t mentioned it before, but
the main reason here is, that I imagine the
majority of people start out on Windows, which
means it’s the best way to reach more people.
We don’t want to be excluding like so many
other parts of our societies.
At least for me, hacking conveys a spirit
to be open and share knowledge.
So that’s why I have to download PuTTY for
Windows now, which is a windows client for
ssh.
To use it to connect to this machine we have
to find the IP address of it.
The username and password for the protostar
image is just “user”.
So use that to login.
And then execute the command `ip addr`, to
find the assigned IP and then copy it into
putty, save this session and press Open.
You have to login again, but this is much
better now.

Turkish: 
şimdi. Verileri ileri geri kopyalayabiliriz ve
Birden fazla bağlantı olabilir.
Mac ve Linux için eşdeğer sadece basit
`ssh`, ip adresindeki“ user ”kullanıcı adı.
Tamam. Şu anda kabuğumuz / bin / sh. Ve
Gördüğünüz gibi sekme tamamlama çalışmıyor.
Fakat bunun yerine `/ bin / bash` komutunu çalıştırabiliriz.
komut satırını biraz daha güzel hale getirir.
Peki burada neyimiz var. Uname ile-a
bazı sistem bilgilerini alabiliriz ve
2.6.32’ye sahip bir 32 bit linux’umuz olduğunu görün
çekirdek.
Peki bu şimdi nasıl çalışıyor? İnternet sitesinde
diyor ki: sömürülecek seviyeler olabilir
/ opt / protostar / bin dizininde bulunur.
Bir bakalım. Tüm dosyaları listelemek için
bu dizinde. Hemen fark edeceksiniz
dosya adları için bu garip kırmızı arka plan rengi.
Daha yakından bir göz atalım.
`Files` ile dosya tipini kontrol edebiliriz ve
bize bir setuid ELF 32bit olduğunu söylüyor.

English: 
We can copy data back and forth and we can
have multiple connections.
The equivalent for Mac and Linux is just simply
`ssh`, the username “user” at the ip address.
Ok.
At the moment our shell is /bin/sh.
And as you can see, tab-completion doesn’t
work.
But we can execute `/bin/bash` instead, which
makes the command-line a bit nicer.
So what do we have here.
With uname -a we can get some system information
and we can see that we have a 32bit linux
with a 2.6.32 kernel.
So how does this work now.
On the website it says: The levels to be exploited
can be found in the /opt/protostar/bin directory.
Let’s have a look.
`Ls` to list all files in this directory.
Immediately you will notice this weird red
background color for the filenames.
Let’s have a closer look.
With `files` we can check the filetype and
it tells us that it is a setuid ELF 32bit

English: 
executable.
From earlier videos you may remember that
we have never encountered `setuid` before.
As always, if we want to know something in
linux, we can look in the linux manual.
Though, the man page for setuid is actually
about the setuid function provided by libc.
But that doesn’t bother us, because it might
be related.
So let’s see what it says here about this
function.
setuid stands for set user identity.
And… setuid sets the effective user ID of
the calling process.
mhh… with cat /etc/passwd we can see all
users on this system.
Remember our user is called user so we have
the id 1001.
And the root user has id 0.
So does that mean, that we can simply write
a C program as our unprivileged user and execute
setuid with id 0, to become root?
Obviously not.
That would be horrible.
Further down it tells us about possible errors
like EPERM which says that the user is not

Turkish: 
yürütülebilir. Önceki videolardan hatırlayabileceğiniz
Daha önce hiç 'setuid' ile karşılaşmadık.
Her zamanki gibi, içinde bir şeyler bilmek istiyorsak
linux, linux kılavuzuna bakabiliriz. gerçi,
setuid için man sayfası aslında
libu tarafından sağlanan setuid işlevi. Fakat
bu bizi rahatsız etmiyor, çünkü olabilir
ilgili olmak. Peki burada ne yazdığını görelim
Bu fonksiyon hakkında.
setuid, set kullanıcı kimliğini ifade eder.
Ve… setuid, etkin kullanıcı kimliğini belirler.
çağrı işlemi.
mhh… cat / etc / passwd ile hepsini görebiliriz
bu sistemdeki kullanıcılar. Unutmayın ki kullanıcı
denilen kullanıcı bu yüzden kimliği 1001'e sahibiz.
kök kullanıcının kimliği 0.
Yani bu, basitçe yazabileceğimiz anlamına mı geliyor?
ayrıcalıklı kullanıcı olarak bir C programı ve yürütme
root olmak için id 0 ile setuid?
Belli ki değil. Bu korkunç olurdu. Daha ileri
aşağı gibi bize olası hataları hakkında anlatır
Kullanıcının ayrıcalıklı olmadığını belirten EPERM

Turkish: 
ve kullanıcı kimliği gerçek kullanıcı kimliği ile eşleşmiyor
çağrı işlemi. Tamam… o zaman… ne olabilir
için kullanılacak?
Örnek bir kullanım, bir kök işlem olabilir
imtiyazları imtiyazsızlara bırakmak istiyorum
kullanıcı, sürecin istismar edilmesi durumunda,
saldırgan kök ayrıcalıkları kazanmıyor.
Öyleyse, başlaması gereken bir işlem varsa
kök olarak ama o zaman artık gerek yok
onları bırakmak iyidir.
Neyse. Bunun bizim ile ne alakası var?
setuid ikili?
Bakmak için ikinci bir ssh oturumu açalım
çalışan tüm işlemlerde.
Şimdi çalışmaya devam eden bir işlem açın. bir şey
Bir vim editörü gibi basit. Ve sonra yapabiliriz
ps kabuk komutunu çalıştırmak için diğer kabuğu kullanın.
Tüm çalışan işlemleri listeler. Şimdi zorundayız
biraz ara, ama işte burada. İlk sütun
Bize çalışan işlemin kullanıcısını anlatır.
Ve çünkü “kullanıcı” olarak ilerledik
vim, ayrıcalıklarımızla koşacak. Yani hayır
Hadi şu salak ikililerden birini çalıştıralım
ve aynısını yapın.

English: 
privileged and the uid does not match the
real uid of the calling process.
Ok… then… what can it be used for?
An example usage is, that a root process might
want to drop privileges to an unprivileged
user, that in case the process gets exploited,
the attacker does not gain root privileges.
So if you have a process that has to start
as root but then doesn’t need it anymore,
it’s good to drop them.
Anyway.
What does this have to do with our setuid
binary?
Let’s open a second ssh session to look
at all running processes.
Now open a process that keeps running.
Something simple like a vim editor.
And then we can use the other shell to execute
`ps aux` to list all running processes.
Now we have to search a bit, but here it is.
The first column tells us the user of the
running process.
And because we as “user” have executed
vim, it will run with our privileges.
So no let’s execute one of those setuid
binaries and do the same.

English: 
Let’s search the program name.
Here it is.
BUT do you see the first line?
It says it’s running as root.
What the fuck?
How is that possible?
Let’s have a look again at the file permissions.
Ok first of all `r` `dash` `x` means that
anybody on the system can read this file and
execute it.
The next 3 permissions are the same and refer
to the permissions for the group.
A group is just an id, that multiple users
could share.
So we are in the group that is also called
user.
But theoretically you could group multiple
users together.
Ok.
Now it get’s interesting.
The first character indicates if a file is
a directory.
Well it’s not.
So the remaining 3 permissions are for the
owner of the file.
The owner of the file is root.
And the owner has the permissions to read,
write and … S?
So the s replaced what should be x for executable.
This is called the setuid bit.

Turkish: 
Programın ismini arayalım. İşte burada.
AMA ilk satırı görüyor musun? Diyor ki
kök olarak çalışıyor. Ne sikim? Bu nasıl
mümkün?
Dosya izinlerine tekrar göz atalım.
Tamam, her şeyden önce "r`` dash` x" demek.
sistemdeki herkes bu dosyayı okuyabilir ve
Onu çalıştır.
Sonraki 3 izin aynıdır ve başvuru
grubun izinlerine. Bir grup
bu, yalnızca birden fazla kullanıcının paylaşabileceği bir kimliktir.
Bu yüzden biz de denilen gruptayız.
kullanıcı. Fakat teorik olarak çoklu grup olabilir.
birlikte kullanıcılar.
Tamam. Şimdi ilginçleşiyor. İlk
karakter, bir dosyanın bir dizin olup olmadığını gösterir.
İyi değil. Yani kalan 3 izin
Dosyanın sahibi içindir. Sahibi
dosya kök. Ve sahibi izinleri var
okumak, yazmak ve… S? Yani s değiştirildi
çalıştırılabilir için x olmalıdır. Bu denir
setuid biti.

Turkish: 
Çalışan işleme çoktan baktık,
Böylece bunun ne yaptığını tahmin edebilirsiniz. Bu ne zaman
bit ayarlandı ve normal bir kullanıcı olarak yürütüyorum
o, aslında Linux ile yürütecek
sahibinin ayrıcalıkları. Yani bu durumda
root olarak çalışacak. Neden birileri cehennemde olsun?
Bunu yap?
İki iyi örnek var. İlk önce
sudo'yu tanır. Hangi sağlayan bir programdır
eğer bir şey kök olarak çalıştırmak için
normal kullanıcı Peki sudo bir programı nasıl çalıştırabilir?
root olarak, komut yazmış olsanız bile?
Ayrıca setuid biti var.
Bir başka güzel örnek ise ping programı.
Ping ayrıca kök olarak da çalışacaktır, çünkü
setuid biti ayarlandı. Neden soruyorsun? Çünkü ping
oldukça geniş kapsamlı bir ICMP paketi göndermek istiyor
Düşük katman Ve linux genellikle izin vermiyor
normal kullanıcılar bu tür ham paketleri oluşturmak için. Fakat
ping kötü değildir, biri yarattı
Normal kullanıcılara izin vermek için setuid ikili
ICMP paketlerini gönderin.

English: 
We have already looked at the running process,
so you can guess what this does.
When this bit is set, and I as a regular user
execute it, Linux will actually execute it
with the privileges of the owner.
So in this case it will run as root.
Why the hell would somebody do this?
There are two good examples.
First, you may know sudo.
Which is a program that allows you to run
something as root if you are a normal user.
So how can sudo execute a program as root,
even though you typed in the command?
Well it also has the setuid bit.
Another great example is the ping program.
Ping will also run as root, because it has
the setuid bit set.
Why you ask?
Because ping wants to send an ICMP packet
which is a fairly low layer.
And linux generally doesn’t allow normal
users to create such raw packets.
But because ping is not evil, somebody created
a setuid binary, to allow normal users to
send ICMP packets.

Turkish: 
Bir program için bir suistimal varsa
ping gibi, bu yürütmenize izin verir
root olarak isteğe bağlı kod, değil mi? Yani açık,
Bu salak gerçekten tehlikeli olabilir.
İyi. Ve bu bütün mesele
protostardan kaynaklanan zorluklar. Eğer yararlanabilirsek
Bu programlardan birini burada yükseltebiliriz
ayrıcalıklar ve kök kazanın. Bu temelde
iPhone'larda jailbreak veya köklenme gibi
android cihazlar. Bir güvenlik açığı bulmaya çalışıyorsunuz
Bu keyfi kod yürütmenize olanak sağlar
ayrıcalıklı bir modda. Eh, gerçek olanlar üzerinde
cihazlar, özellikle iOS bu son derece
lanet karmaşık ve çok daha fazla katman
katılıyorum, ama şimdi daha iyi bir hayal gücü elde ediyorsunuz
her şeyin.
Zorluklara başlamadan önce son bir şey.
Programlarda hata ayıklayabileceğini biliyorsun, değil mi?
Örneğin casusluk yapmak için strace kullanabilirsiniz.
sistem çağrıları. Veya sadece gdb kullanın. Ve gdb izin verir
hafızayı değiştirmek için Yani sadece açabilirsin
gdb içindeki bu setuid binary, kodu değiştirir.

English: 
What if there is an exploit for a program
like ping, that would allow you to execute
arbitrary code as root, right?
So it’s clear, that setuid can be really
dangerous.
Well.
And that’s the whole point of the challenges
from protostar.
If we can exploit one of these programs here,
we can escalate privileges and gain root.
This is basically like jailbreaking on iPhones
or rooting on android devices.
You try to find a vulnerability that allows
you to execute arbitrary code in a privileged
mode.
Well, on those real devices, especially iOS
this is extremely fucking complicated, and
a lot more layers are involved, but now you
get a better imagination of the whole thing.
One last thing before we start with the challenges.
You know that you can debug programs, right?
For example you can use strace to spy on the
system calls.
Or simply use gdb.
And gdb allows you to modify memory.
So you could just open this setuid binary
in gdb, modify the code and execute whatever
you want as root?

Turkish: 
ve kök olarak ne istersen yap? Haydi
dene. Tamam, koşuyor gibi görünüyor. Öyleyse tekrar çalışalım
o ve işlem listesine bakın. Yapabileceğin gibi
artık kök olarak çalışmadığını görüyorum.
nedeni, bu gdb bir işlem hata ayıklama olamaz
başka bir kullanıcı olarak çalışır. Yani aslında gdb
binary'i root olarak NOT çalıştırmaya zorlar böylece
Aslında hata ayıklayabilirsiniz. Çok iyi fikir, ama ne yazık ki…
ya da neyse ki o kadar basit değil.
Sanırım iyi eski sömürüye güvenmek zorundayız
teknikleri.
Başladığımızda bir sonraki videoda görüşmek üzere
ilk meydan okuma.

English: 
let’s try it.
Ok it seems to run.
So let’s rerun it and look at the process
list.
As you can see it doesn’t run as root anymore.
The reason is, that gdb could not debug a
process that runs as another user.
So gdb actually forces the binary to NOT run
as root so it can actually debug it.
So good idea, but unfortunately… or maybe
fortunately it’s not that simple.
I guess we have to rely on good old exploiting
techniques.
See you in the next video when we start with
the first challenge.
