Sie sind auf Seite 1von 21

Rnqu`rnlnft;

◊ Lnledel` cjfsnp pnlrjgrelef


◊ Snm`c`t lnledel` bedese essnlbIy
◊ Lnfgnrt` bedese O
◊ LnfgnfeI I`fux mef bnbnrepe ojllefmfye

EXE @]U B@FERP NTXIJ@]E]@JF

B`fery nxpIj`tet`jf emeIed snbued prjsns lnlefaeetcef cnInledef mer` suetu b`fery snbege` cnuftufgef
uftuc pnfynrefg.

B`fery nxpIj`tet`jf emeIed snbued prjsns lnfggufecef suetu a`tur mnfgef oere yefg t`mec snlnst`fye
eger a`tur tnrsnbut t`mec bncnrje mnfgef snlnst`fye.

B`fery nxpIj`tet`jf bncnrje mnfgef pr`fs`p lnfggufecef bug eteu cnInledef yefg tnrmepet peme
snbued epI`ces`, uftuc lnfynbebcef cnjem`ef yefg t`mec tnreft`s`pes` jInd mnvnIjpnr eteu pnlbuet
epI`ces` tnrsnbut
LAYOUT MEMORY

Uftuc lnlpnIejer` B`fery NxpIj`t, lece c`te derus lnfgnfeI muIu Ieyjut lnljry mer` b`fery
meIel deI `f` meIel bnftuc NIA (NxnoutebIn efm I`fcebIn Ajrlet). Cernfe cnt`ce lnfjeIefcef
snbued b`fery, b`fery tnrsnbut ecef m`-ijem cn meIel lnljry. Lnljry `f`

jbungrerbt``sperjms`nbsegn`ccsnpI2j`jtnefs`sf,y3e2e-bce`tfmelfn1f4je-mb``tb,

nyrebfngmIeeypjuuIet .lnljryfye bnrbnme, yefg


Bnr`cut emeIed Ieyjut lnljry sntnIed b`fery 32-b`t m` Ijem cn lnljry.

Bnrmesercef gelber m`etes, Ieyjut lnljry b`fery 32-b`t tefpe prjtncs` ESIR (Emmrnss Speon
Ieyjut Refmjl`zet`jf) tnrm`r` mer` snglnf snbege` bnr`cut;
5. Snglnf NIA
e. Snglnf .tnxt
Bnr`s` `fstrucs` `fstrucs` l`I`c b`fery (NIA) meIel bedese essnlbIy. ojftjd; ljv
nex,2
b. Snglnf .mete
Bnr`s` ver`ebnI-ver`ebnI gIjbeI peme b`fery yefg m``f`s`es`cef.
o. Snglnf .bss
Bnr`s` ver`ebnI-ver`ebnI gIjbeI peme b`fery yefg t`mec m``f`s`es`cef.
2. Dnep
]nlpet pnfy`lpefef mete m`fel`s, yefg b`esefye m`gufecef cnt`ce lnlbuet snbued
jbjnc beru, mef eteu aufgs` leIIjo() m`pefgg`I. MeIel pnlbnftuceffye,

3. d n e p m` lu Ie` mer` emmrnss yefg t`fgg` cn yefg Inb`d rnfmed (cn bewed).
S te o c
]nlpet pnfy`lpefef ver`ebIn IjceI meIel suetu aufgs`, tnrlesuc urutef pnlefgg`Ief
aufgs`fye. MeIel pnlbnftuceffye, steoc m`luIe` mer` emmrnss yefg rnfmed cn yefg
Inb`d t`fgg` (cn etes).
4. Ergv , Nfv`rjflnft ver`ebIn
]nlpet m`s`lpeffye Ergv (Xerelntnr yefg m`bnr`cef cn b`fery), mef Nfv`rjflnft
Qer`ebIn (ver`ebnI-ver`ebnI yefg m`l`I`c` jInd JS yefg lnfgncsncus` b`fery)
>. CnrfnI Speon
Beg`ef lnljry yefg m`cdususcef uftuc cnrfnI, snd`fgge t`mec b`se m`gufecef jInd
b`fery

Xeme prjsns b`fery nxpIj`t, yefg ecef c`te efeI`se b`esefye emeIed snglnf Dnep mef Steoc.
]ep` sumed pest` ecef eme b`fery yefg m`prjtncs` jInd ESIR. DeI `f` lnfynbebcef t`fgcet
cnsuI`tef meIel ncspIj`tes` bnrtelbed.

ESIR(Emmrnss Speon Ieyjut Refmjl`zet`jf) emeIed seIed setu jnf`s prjtncs` yefg tnrmepet
peme b`fery. Oere cnrjefye emeIed mnfgef lnlbnr`cef jaasnt yefg f`Ie`fye refmjl snbnIul
emmrnss eweI dnep mef steoc. Snd`fgge emmrnss pjs`s` mete eteu ver`ebIn m` dnep mef steoc
`tu lnfjem` t`mec tntep, yefg lnfyuI`tcef prjsns ncspIj`tes`
SnIe`f lnfgntedu` Ieyjut lnljry, c`te juge derus lnfgntedu` Ieyjut peme steoc. L`seIcef
peme snbued b`fery, tnrmepet aufgs` le`f yefg lnlefgg`I snbued aufgs` yefg urutef
`fstrucs`fye emeIed; aufgs`(perel 5, perel 2 ,perel f)
eIelet `fstrucs`

v Xusd 9perelntnr f6

w Xusd 9perelntnr 26

x Xusd 9perelntnr 56

y OeII 9aufgs`6

z ...
S`aet steoc emeIed lnfg`s` mer` rnfmed cn yefg Inb`d t`fgg`, jem` perelntnr f ecef m`lesuccef m`
steoc peI`fg rnfmed, IeIu perelntnr 2, IeIu perelntnr 5.

Snmefgcef cnt`ce oeII 9aufgs`6 m`jeIefcef, juge ecef m`Iecucef pusd cn meIel steoc, tep` yefg
m` pusd cn meIel steoc emeIed eIelet yefg ecef m`ncsncus` sntnIed prjsns oeII, meIel deI `f`
eIelet z. Eger sntnIed aufgs` snInse` m`ncsncus`, prjgrel ecef m`Iefjutcef cn eIelet tnrsnbut.

SntnIed lesuc cnmeIel aufgs`, b`fery ecef lnlbnftuc steoc areln beru, ye`tu steoc snlnftere yefg
ecef m`gufecef defye uftuc aufgs` `tu snfm`r`. Oerefye emeIed mnfgef lnlbuet meser mer` steoc
areln tnrsnbut mnfgef lnIecucef pusd EBX (besn pj`ftnr). Xeme eweIfye f`Ie` NSX ecef sele
mnfgef NBX. Feluf, cnt`ce perelntnr perelntnr yefg m`butudcef aufgs` yefg sumed eme m`
steoc ecef m` pusd cn meIel steoc areln, F`Ie` NSX ecef fe`c, snd`fgge NBX lnfjem` betes
bewed steoc areln. Mef NSX lnfjem` betes etes steoc areln.

snd`fgge Ieyjut steoc peme b`fery 32-b`t lnfjem` snbege` bnr`cut.

9- oeII 9aufgs`6 (pusd z)

9- pusd 9perelntnr 56

9- pusd 9perelntnr 26

9- pusd 9perelntnr f6
Ieyjut steoc l`I`c b`fery 14-b`t, snm`c`t bnrbnme mnfgef l`I`c b`fery 32-b`t. Cnt`ce b`fery
32-b`t lnlesuccef perelntnr perelntnr aufgs` yefg ecef m`gufecef aufgs` yefg m`pefgg`I
cn meIel steoc, b`fery 14-b`t lnIecucefye mnfgef oere lnlesucef perelntnr tnrsnbut cn
meIel rng`stnr snpnrt` RM@, RS@ mef Ie`ffye lnfggufecef
`fstrucs` ljv. Ojftjd;
Mjv rm` , 9perelntnr 56
Mjv rs` , 9perelntnr 26
.
.
OeII 9aufgs`6

Snd`fgge Ieyjut steocfye emeIed snbege` bnr`cut.


TOOLS

Bnr`cut emeIed bnbnrepe tjjIs leupuf pIug`f yefg snr`fg m`gufecef meIel b`fery nxpIj`t.

M@SASSEMBLER / MEBUGGER
Uftuc lnfgefeI`se b`fery. Bnbnrepe tjjIs yefg pnfuI`s gufecef emeIed;

5. @MA
@f` mepet m`gufecef uftuc m`sessnlbIy eteu mnbugg`fg. Qnrs` gret`sfye mepet m`
mjwfIjem m` s`f` . vnrs` arnnfye defye b`se m`gufecef uftuc b`fery 14-b`t
2. B@FARY F@FKA
Aufgs`fye t`mec jeud bnrbnme mnfgef @ME, feluf uftuc lnIecucef petod`fg m` b`fery, Inb`d
lumed m`Iecucef mnfgef tjjI `f`. Qnrs` gret`s/mnlj fye mepet m` mjwfIjem m` s`f` . vnrs` mnlj
defye b`se m`gufecef uftuc b`fery 32-b`t
3. GMB-XEMA
@f` emeIed pIug`f mer` gmb, yefg lnlbuet gmb Inb`d bnrwerfe mef lumed uftuc m`
gufecef. M` I`fux, j`ce bnIul eme Iefgsufg mepet m` elb`I mer` rnpjs`tjry, mnfgef
ojllefm sumj ept-gnt `fsteII gmb.
K`ce sumed pufye, stnp pnfg`fsteIef fye b`se m` I`det m` s`f`
Uftuc oere lnfggufeceffye, mepet m`I`det peme MjmuI Rnvnrsn Efg`fnnr`fg
4. RAMARE2
@f` emeIed arelnwjrc yefg m`gufecef uftuc rnvnrsn-nfg`fnnr`fg mef efeI`s`s b`fery. Remern2 juge
lnl`I`c` befyec ut`I`ty yefg mepet m`gufecef snoere `fmnpnfmnf. Remern2
`f` bnrbes`s OI@ (Ojllefm I`fn @ftnraeon)

XYTDOF
Uftuc lnlbuet sor`pt. Xeme JS I`fux, b`se m``fsteII mnfgef ojllefm sumj ept-gnt `fsteII
pytdjf2. B`esefye sor`pt m`buet mnfgef pytdjf vnrs` 2

XWFTOOLS
LjmuIn pytdjf yefg ecef snr`fg m`gufecef uftuc b`fery nxpIj`t. Cnt`ce sumed lnfg`fsteII pytdjf,
`fsteII pwftjjIs mnfgef ojllefm sumj p`p `fsteII pwftjjIs.
Oere pnlece`effye b`se m`pnIejer` m` s`f`

ROXGAMGET
]jjI yefg m`gufecef uftuc lnfoer` gemgnt-gemgnt peme lntjmn Rnturf Jr`nftnm Xrjgrell`fg yefg
ecef m`bedes feft`fye
PROTEKSI

Cnt`ce lnIecucef b`fery nxpIj`t, c`te ecef lnfnlucef bnbnrepe jnf`s prjtncs` yefg m`tnrepcef peme
b`fery, bnbnrepe m`efterefye emeIed
1. CANARY
Oefery emeIed prjtncs` yefg lnlest`cef t`mec tnrjem`fye buaanr jvnraIjw peme b`fery

2. NX
FT emeIed prjtncs` yefg lnlbuet steoc mepet m` ecsns, tep` t`mec mepet m`ncsncus`.
Snd`fgge t`mec lufgc`f lnIecucef sdnIIojmn `fjnot`jf cnmeIel steoc IeIu lnfgncsncus`fye.
3. FORTIFY
Ajrt`ay emeIed prjtncs` yefg lnlest`cef t`mec mepet tnrjem`fye ajrlet str`fg etteoc peme b`fery

SnInfgcepfye b`se m` I`det m` s`f`

BUFFER OVERFLOW

SntnIed lnledel` tnftefg Ieyjut steoc, c`te tedu, bedwe f`Ie` f`Ie` perelntnr yefg eme peme suetu aufgs`
ecef m`Inteccef bnrmncetef cnt`ce m`lesuccef m` steoc. DeI `f` Ied yefg ecef c`te lefaeetcef uftuc
lnIecucef buaanr jvnraIjw nxpIj`t.

L`seI;
Xeme snbued b`fery 32-b`t, eme snbued aufgs` yefg lnlbutudcef 2 perelntnr uftuc lnfjeIefcef
aufgs` tnrsnbut. Efggep seje perelntnr 5 f`Ie`fye emeIed 8 mef perelntnr 2 emeIed snbued errey ja
oder yefg pefjefgfye 4 nInlnf mef `s`fye emeIed EBOMNAGD. Lece cnt`ce lesuc cn meIel aufgs`
tnrsnbut, cnemeef steocfye curefg Inb`d snpnrt` `f`.

Xerelntnr 2
Yx44(M) Yx43(O) Yx42(B) Yx45(E)
Emmrnss; x
Yx44(D) Yx47(G) Yx41(A) Yx4>(N)

Xerelntnr 5 Yx88 Yx88 Yx88 Yx88


Emmrnss; x+4

Lnfgepe `s` mer` perelntnr 2 tnrbeI`c:


Cernfe lntjmn pnfy`lpefef mete m` meIel lnljry `f` emeIed mnfgef s`stnl I`ttIn-nfm`ef. XnfjnIeseffye
eme m` s`f`

IeIu epe yefg tnrjem` ceIeu c`te bnr` `fput Inb`d mer` 4 nInlnf: Ojftjdfye EBOMNAGD@KCI
Pefg tnrjem` emeIed perelntnr 2 ecef tntep lnlesuccef snlue `fput l`I`cfye, snd`fgge lnfgec`betcef
f`Ie` perelntnr 5 tnr-jvnrwr`tn. @f`Ied yefg m`felecef mnfgef Buaanr OvnraIjw.

Xerelntnr 2 Yx44(M) Yx43(O) Yx42(B) Yx45(E)

Emmrnss; x Yx44(D) Yx47(G) Yx41(A) Yx4>(N)

Xerelntnr 5 Yx>2(I) Yx>5(C) Yx>8(K) Yx49(@)


Emmrnss; x+4

Bnrert` f`Ie` perelntnr 5 bnrubed lnfjem` 8x49>8>5>2, ye`tu 5238888411 mns`leI

Iet`def5
B`fery; steoc8

SntnIed lnlbeoe mef lnledel` prjgrel o `f`, yefg ecef c`te Iecucef emeIed lnljm`a`ces` f`Ie`
mer` ljm`a`nm lnfjem` f`Ie` epepuf snIe`f 8. Ler` c`te efeI`s`s lnfggufecef gmb.
K`ce m` ojojccef mnfgef sjuronojmn yefg tnrsnm`e, lece `ft ljm`a`nm `f` ecef sele mnfgef ljv
MWORM PTR Snsp+8x>o\,8x8 yefg bnrert` ljm`a`nm sele mnfgef Snsp+8x>o\. Mef gnts(buaanr)
ecef sele mnfgef oeII 8x484438o 9gntsHpIt6, mnfgef perelntnr buaanr yefg sele mnfgef
Snsp+8x>o\.

K`ce m`gelbercef, lece ecef lnfjem` snpnrt` bnr`cut.

nsp

.
nsp+8x5o

nsp+8x>o

SeIed setu aufot`jf yefg mepet lnfgec`betcef tnrjem`fye buaanr jvnraIjw emeIed gnts, yefg lnlbuet c`te
mepet lnlesuccef `fput snpefjefg epepuf cn meIel steoc.

Cernfe b`se tnrjem` buaanr jvnraIjw, sncerefg c`te ecef lnfojbe uftuc lnfggeft` f`Ie` mer`
ljm`a`nm, yefg bnreme m` bewed buaanr m` steoc. Oerefye emeIed mnfgef lnfgd`tufg pefjefg
`fput yefg m`butudcef uftuc lnfoepe` emmrnss ljm`a`nm, ye`tu 8x>o-8x5o<8x48<14 mns`leI.
Berarti kita akan memasukkan input sepanjang 64 karakter, ditambah dengan niIai untuk modified.

Gunakan python

Kita berhasiI memodifikasi niIai dari modified. Penampakan di

stack:

esp

esp+0x1c \x41(A) \x41(A) \x41(A) \x41(A)

. \x41(A) \x41(A) \x41(A) \x41(A)

esp+0x5c \x42(B) \x42(B) \x42(B) \x42(B)

NiIai modified berubah menjadi 0x42424242

Bagaimana jika kita harus mengganti niIai modified menjadi niIai tertentu serta memakai jenis inputan
yang berbeda?
Iatihan2
Binary:stack1
stack1
(stack1.c)

'

SeteIah memahami program ini, dapat disimpuIkan bahwa kita harus mengganti niIai modified menjadi
0x61626364. KaIau yang tadi kita memasukkan input didaIam binary, stack1 ini memasukkan inputan
berupa argumen.

AnaIisis dengan gdb.


Aungsi Iain yang juga vuInerabIe terhadap serangan buffer overfIow adaIah stropy. Sehingga kita bisa
memanfaatkan fungsi ini.

Kondisi stacknya sama dengan stack0, jadi Iangsung aja.

Karena kita ingin membuat niIai modified menjadi 0x61626364, kita harus memberi inputan tiap byte
daIam IittIe-endian. Sehingga bentuknya akan menjadi \x64\x63\x62\x61.

Gunakan python.

Untuk inputan yang berupa argumen ini, gunakan simboI h (di bawah esc keyboard UWNR]P) untuk
menjaIankan command bash di argumen
Iatihan3:
Binary:stack2
stack2

Pada binary ini, vuInerabiIity nya terdapat pada stropy(buffer,veriebIe),sehingga kita akan
menggunakan variabeI veriebIe untuk meIakukan buffer overfIow. NiIai veriebIe diperoIeh dari fungsi
getefv(’GREENIE“), yaitu mengambiI environment variabIe yang bernama GRNNN@N dari JS
masing masing.
Kondisi stacknya juga sama dengan yang sebeIumnya, yaitu 64 karakter ditambah niIai byte untuk
mengubah modified, yaitu \x0a\x0d\0x0a\x0d

Untuk meIihat environment variabIe apa saja yang ada di JS Iinux masing masing, gunakan command
efv.
Kita juga bisa menambahkan environment variabIe sendiri, dengan menggunakan command
export.
RETURN ORIENTEM PROGRAMMING (ROP)

RJP adaIah jenis expIoit yang memanfaatkan return address yang di simpan pada stack, untuk mengubah
aIur berjaIannya program sesuai keinginan penyerang.

NxpIoit ini dapat diIakukan dengan beberapa cara, saIah satunya adaIah dengan menggunakan

buffer overfIow. Kika sebeIumnya yang kita overwrite adaIah niIai sebuah variabIe, maka yang kita
overwrite sekarang adaIah return address yang disimpan pada stack

9-yang itu

Oaranya kurang Iebih sama, yaitu mencari address stack disimpannya return address, dan
mencari address stack variabIe yang akan di expIoit.
Iatihan3:
Binary:stack4
stack4

Pang akan kita Iakukan adaIah membuat aIur program berubah, dari yang awaInya start-6fungsi main-6

end , menjadi start -6 fungsi main -6 fungsi win.

Mata yang kita butuhkan untuk expIoit adaIah:


1. Address fungsi wif()
2. Address stack returf eddress
3. Address stack buffer

Untuk mendapatkan data tersebut, gunakan gdb.


1. Address fungsi wif()

Address fungsi wif() < 0x040443f4


2. Address stack returf eddress
Ketika mempeIajari Iayout stack sebeIumnya, dapat kita ketahui bahwa return address akan
Iangsung di-pusd ke daIam stack ketika instruksi oeII dijaIankan. Sehingga, kita akan mengambiI
address stack return address seteIah instruksi oeII dijaIankan, yang
berarti addressnya pada saat itu terIetak di puncak stack. MaIam haI ini, karena expIoit akan
dijaIankan di fungsi meif(), kita bisa Iangsung meIihatnya ketika masuk ke fungsi main.
Mi gdb, fungsi meif() di break, agar program terhenti ketika masuk ke fungsi meif(),
IaIu jaIankan program.
Address stack returf eddress < 0xffffd19o
3. Address stack buffer
Untuk mencari address stack buffer ini, dapat kita Iakukan dengan cara memberhentikan
program seteIah variabIe buffer teIah kita isi input, yaitu di instruksi seteIah gets(buffer)
dijaIankan.

IaIu, ketika program dijaIankan, masukkan inputnya. Laka hasiInya adaIah


Address buffer < 0xffffd1>0

Karena semua data sudah berhasiI kita ambiI, sekarang saatnya kita membuat script expIoit.
Sekarang saya akan memakai pytdof dan moduIenya, pwftooIs.
Mef cnt`ce sor`pt m`jeIefcef,

Bnrdes`I lesuc cn aufgs` w`f()

Das könnte Ihnen auch gefallen