KỸ THUẬT KHAI THÁC LỖI TRÀN TRONG BỘ ĐỆM (Phần 2)
Số trang: 12
Loại file: doc
Dung lượng: 65.50 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Trên các hệ điều hành đa người dùng nói chung và UNIX nói riêng, thiết kế truyền thống cho phép user root(superuser) có quyền tối cao có thể thực hiện mọi thao tác trên hệ thống. Hơn nữa, có một số thao tác đòi hỏibuộc phải có quyền root mới có thể thực hiện được, ví dụ thay đổi mật khẩu (phải cập nhật file /etc/passwd).Để người dùng bình thường có thể thực hiện được các thao tác này, hệ thống UNIX cung cấp một cơ chế thiếtlập quyền thực tế của tiến trình đang thực thi thông qua các...
Nội dung trích xuất từ tài liệu:
KỸ THUẬT KHAI THÁC LỖI TRÀN TRONG BỘ ĐỆM (Phần 2)KỸTHUẬTKHAITHÁCLỖITRÀNBỘĐỆM(Phần2)trangnàyđãđượcđọc lầnPhần2:KỹthuậtkhaitháclỗitrànbộđệmMụclục 1.Quyềnrootvàchươngtrìnhsetuid/setgid • 2.Chươngtrìnhbịtrànbộđệm • 3.Tổchứcshellcodetrênbộnhớ • 4.Xácđịnhđịachỉshellcode • 5.Viếtchươngtrìnhkhaitháclỗitrànbộđệm • o 5.1.Truyềnshellcodequabộđệm 5.2.Truyềnshellcodequabiếnmôitrường o 6.Kếtluận • Tàiliệuthamkhảo • Liênkết •1.Quyềnrootvàchươngtrìnhsetuid/setgidTrêncáchệđiềuhànhđangườidùngnóichungvàUNIXnóiriêng,thiếtkếtruyềnthốngchophépuserroot(superuser)cóquyềntốicaocóthểthựchiệnmọithaotáctrênhệthống.Hơnnữa,cómộtsốthaotácđòihỏibuộcphảicóquyềnrootmớicóthểthựchiệnđược,vídụthayđổimậtkhẩu(phảicậpnhậtfile/etc/passwd).Đểngườidùngbìnhthườngcóthểthựchiệnđượccácthaotácnày,hệthốngUNIXcungcấpmộtcơchếthiếtlậpquyềnthựctếcủatiếntrìnhđangthựcthithôngquacáchàmthiếtlậpquyềnnhưsetuid()/setgid(),seteuid()/setegid(),setruid()/setrgid().Quyềnthựctếsẽđượchệthốngtựđộngthiếtlậpthôngquabitthuộctínhsuid/sgidcủafilechươngtrình.Vídụchươngtrìnhpasswdđượcsuidroot:rsxx1rootroot12244Feb82000/usr/bin/passwdKhiuserbìnhthườngthựcthichươngtrình,quyềnthựctếcóđượcsẽlàquyềncủangườisởhữu(owner)file,ởđâylàroot.Doyêucầusửdụng,trênhệthốngUNIXthườngcónhiềufilechươngtrìnhđượcthiếtlậpthuộctínhsuid(choowner,group).Vídụsausẽminhhoạrõhơnđiềunày:/*suidsh.c*/voidmain(){setuid(0);system(/bin/sh);}[SkZ0@gammabof]$gccosuidshsuidsh.c[SkZ0@gammabof]$suPassword:#chownroot.rootsuidsh#chmod4755suidsh#exit[SkZ0@gammabof]$lslsuidshrwsrxrx1rootroot13637Mar2615:54suidsh[SkZ0@gammabof]$iduid=501(SkZ0)gid=501(SkZ0)groups=501(SkZ0)[SkZ0@gammabof]$./suidshbash#iduid=0(root)gid=501(SkZ0)groups=501(SkZ0)Cóthểthấy,nếuchươngtrìnhsuid/sgidbịlỗibảomật,hackersẽtậndụngđiềunàyđểđiềukhiểnchươngtrìnhthựchiệnmãlệnhbấtkỳtrênhệthốngvớiquyềncaohơnvàthậmchívớiquyềncaonhấtroot.Đóchínhlàmụcđíchcủaviệckhaitháccáclỗhổngbảomậttrênmáytạichỗ(local).2.ChươngtrìnhbịtrànbộđệmĐểminhhoạcáchtổchứcvàchènshellcodevàochươngtrìnhbịlỗi,tasẽsửalạimộtchútchươngtrìnhvuln.cđãvídụởphần1:/*vuln1.c*/intmain(intargc,char**argv){charbuf[500];if(argc>1){strcpy(buf,argv[1]);printf(%s ,buf);}}Kíchthướccủabộđệmbuflà500byte.Từnhữngtrìnhbàyởphầntrước,đểkhaitháclỗitrànbộđệmtrongchươngtrìnhvuln1.cchúngtachỉcầnghiđègiátrịcủacontrỏlệnhbảolưu(savedinstructionpointer)đượclưutrênstackbằngđịachỉmãlệnhmongmuốn,ởđâychínhlàđịachỉbắtđầucủashellcode.Nhưvậychúngtacầnphảisắpxếpshellcodeởđâuđótrênbộnhớstackvàxácđịnhđịachỉbắtđầucủanó.3.TổchứcshellcodetrênbộnhớVấnđềcủaviệctổchứcshellcodetrênbộnhớlàlàmthếnàođểchươngtrìnhkhaitháclỗicóthểxácđịnhđượcđịachỉbắtđầucủabộđệmchứashellcodebêntrongchươngtrìnhbịlỗi.Thôngthường,takhôngthểbiếtmộtcáchchínhxácđịachỉcủabộđệmtrongchươngtrìnhbịlỗi(phụthuộcvàobiếnmôitrường,thamsốkhithựcthi),dođótasẽxácđịnhmộtcáchgầnđúng.Điềunàycónghĩachúngtaphảitổchứcbộđệmchứashellcodesaochokhibắtđầuởmộtđịachỉcóthểlệchsovớiđịachỉchínhxácmàshellcodevẫnthựcthikhônghềbịảnhhưởng.LệnhmáyNOP(NoOPeration)giúptađạtđượcđiềunày.KhigặpmộtlệnhNOP,CPUsẽkhônglàmgìcảngoàiviệctăngcontrỏlệnhđếnlệnhkếtiếp.Nhưvậy,chúngtasẽlấpđầyphầnđầucủabộđệmbằngcáclệnhNOP,kếđólàshellcode.Hơnnữa,đểkhôngphảitínhtoánchínhxácvịtrílưucontrỏlệnhbảolưutrênstack,chúngtasẽchỉđặtshellcodeởkhoảnggiữacủabộđệm,phầncònlạisẽchứatoàncácgiátrịđịachỉbắtđầucủashellcode.Cuốicùng,bộđệmchứashellcodesẽcódạng: Hình1:TổchứcshellcodetrênbộnhớHìnhsaumôtảtrạngtháicủastacktrướcvàsaukhitrànbộđệmxảyra. Hình2:Trạngtháistacktrướcvàsaukhitrànbộđệm Before AfterCómộtvấnđềcũngcấnlưuýởđâylàsựsắpxếp(alignment)biếntrênstack.Giátrịđịachỉcóđộdài4byte(32bit),vìvậykhiđượcsắpvàostackkhôngphảilúcnàocũngchínhxácnhưmongmuốn.Ởphầntrướcchúngtađãbiếtstacksửdụng ...
Nội dung trích xuất từ tài liệu:
KỸ THUẬT KHAI THÁC LỖI TRÀN TRONG BỘ ĐỆM (Phần 2)KỸTHUẬTKHAITHÁCLỖITRÀNBỘĐỆM(Phần2)trangnàyđãđượcđọc lầnPhần2:KỹthuậtkhaitháclỗitrànbộđệmMụclục 1.Quyềnrootvàchươngtrìnhsetuid/setgid • 2.Chươngtrìnhbịtrànbộđệm • 3.Tổchứcshellcodetrênbộnhớ • 4.Xácđịnhđịachỉshellcode • 5.Viếtchươngtrìnhkhaitháclỗitrànbộđệm • o 5.1.Truyềnshellcodequabộđệm 5.2.Truyềnshellcodequabiếnmôitrường o 6.Kếtluận • Tàiliệuthamkhảo • Liênkết •1.Quyềnrootvàchươngtrìnhsetuid/setgidTrêncáchệđiềuhànhđangườidùngnóichungvàUNIXnóiriêng,thiếtkếtruyềnthốngchophépuserroot(superuser)cóquyềntốicaocóthểthựchiệnmọithaotáctrênhệthống.Hơnnữa,cómộtsốthaotácđòihỏibuộcphảicóquyềnrootmớicóthểthựchiệnđược,vídụthayđổimậtkhẩu(phảicậpnhậtfile/etc/passwd).Đểngườidùngbìnhthườngcóthểthựchiệnđượccácthaotácnày,hệthốngUNIXcungcấpmộtcơchếthiếtlậpquyềnthựctếcủatiếntrìnhđangthựcthithôngquacáchàmthiếtlậpquyềnnhưsetuid()/setgid(),seteuid()/setegid(),setruid()/setrgid().Quyềnthựctếsẽđượchệthốngtựđộngthiếtlậpthôngquabitthuộctínhsuid/sgidcủafilechươngtrình.Vídụchươngtrìnhpasswdđượcsuidroot:rsxx1rootroot12244Feb82000/usr/bin/passwdKhiuserbìnhthườngthựcthichươngtrình,quyềnthựctếcóđượcsẽlàquyềncủangườisởhữu(owner)file,ởđâylàroot.Doyêucầusửdụng,trênhệthốngUNIXthườngcónhiềufilechươngtrìnhđượcthiếtlậpthuộctínhsuid(choowner,group).Vídụsausẽminhhoạrõhơnđiềunày:/*suidsh.c*/voidmain(){setuid(0);system(/bin/sh);}[SkZ0@gammabof]$gccosuidshsuidsh.c[SkZ0@gammabof]$suPassword:#chownroot.rootsuidsh#chmod4755suidsh#exit[SkZ0@gammabof]$lslsuidshrwsrxrx1rootroot13637Mar2615:54suidsh[SkZ0@gammabof]$iduid=501(SkZ0)gid=501(SkZ0)groups=501(SkZ0)[SkZ0@gammabof]$./suidshbash#iduid=0(root)gid=501(SkZ0)groups=501(SkZ0)Cóthểthấy,nếuchươngtrìnhsuid/sgidbịlỗibảomật,hackersẽtậndụngđiềunàyđểđiềukhiểnchươngtrìnhthựchiệnmãlệnhbấtkỳtrênhệthốngvớiquyềncaohơnvàthậmchívớiquyềncaonhấtroot.Đóchínhlàmụcđíchcủaviệckhaitháccáclỗhổngbảomậttrênmáytạichỗ(local).2.ChươngtrìnhbịtrànbộđệmĐểminhhoạcáchtổchứcvàchènshellcodevàochươngtrìnhbịlỗi,tasẽsửalạimộtchútchươngtrìnhvuln.cđãvídụởphần1:/*vuln1.c*/intmain(intargc,char**argv){charbuf[500];if(argc>1){strcpy(buf,argv[1]);printf(%s ,buf);}}Kíchthướccủabộđệmbuflà500byte.Từnhữngtrìnhbàyởphầntrước,đểkhaitháclỗitrànbộđệmtrongchươngtrìnhvuln1.cchúngtachỉcầnghiđègiátrịcủacontrỏlệnhbảolưu(savedinstructionpointer)đượclưutrênstackbằngđịachỉmãlệnhmongmuốn,ởđâychínhlàđịachỉbắtđầucủashellcode.Nhưvậychúngtacầnphảisắpxếpshellcodeởđâuđótrênbộnhớstackvàxácđịnhđịachỉbắtđầucủanó.3.TổchứcshellcodetrênbộnhớVấnđềcủaviệctổchứcshellcodetrênbộnhớlàlàmthếnàođểchươngtrìnhkhaitháclỗicóthểxácđịnhđượcđịachỉbắtđầucủabộđệmchứashellcodebêntrongchươngtrìnhbịlỗi.Thôngthường,takhôngthểbiếtmộtcáchchínhxácđịachỉcủabộđệmtrongchươngtrìnhbịlỗi(phụthuộcvàobiếnmôitrường,thamsốkhithựcthi),dođótasẽxácđịnhmộtcáchgầnđúng.Điềunàycónghĩachúngtaphảitổchứcbộđệmchứashellcodesaochokhibắtđầuởmộtđịachỉcóthểlệchsovớiđịachỉchínhxácmàshellcodevẫnthựcthikhônghềbịảnhhưởng.LệnhmáyNOP(NoOPeration)giúptađạtđượcđiềunày.KhigặpmộtlệnhNOP,CPUsẽkhônglàmgìcảngoàiviệctăngcontrỏlệnhđếnlệnhkếtiếp.Nhưvậy,chúngtasẽlấpđầyphầnđầucủabộđệmbằngcáclệnhNOP,kếđólàshellcode.Hơnnữa,đểkhôngphảitínhtoánchínhxácvịtrílưucontrỏlệnhbảolưutrênstack,chúngtasẽchỉđặtshellcodeởkhoảnggiữacủabộđệm,phầncònlạisẽchứatoàncácgiátrịđịachỉbắtđầucủashellcode.Cuốicùng,bộđệmchứashellcodesẽcódạng: Hình1:TổchứcshellcodetrênbộnhớHìnhsaumôtảtrạngtháicủastacktrướcvàsaukhitrànbộđệmxảyra. Hình2:Trạngtháistacktrướcvàsaukhitrànbộđệm Before AfterCómộtvấnđềcũngcấnlưuýởđâylàsựsắpxếp(alignment)biếntrênstack.Giátrịđịachỉcóđộdài4byte(32bit),vìvậykhiđượcsắpvàostackkhôngphảilúcnàocũngchínhxácnhưmongmuốn.Ởphầntrướcchúngtađãbiếtstacksửdụng ...
Tìm kiếm theo từ khóa liên quan:
bảo mật thông tin An ninh Bảo mật kỹ thuật bảo mật an toàn thông tinGợi ý tài liệu liên quan:
-
Đề cương chi tiết bài giảng môn Đảm bảo và an toàn thông tin
25 trang 271 0 0 -
10 trang 221 1 0
-
5 trang 178 0 0
-
Giáo trình An toàn, an ninh thông tin và mạng lưới
142 trang 170 0 0 -
Kiến thức căn bản về Máy tính - Phùng Văn Đông
52 trang 165 0 0 -
Xây dựng thuật toán, thử nghiệm đánh giá mô hình cứng hóa giao thức IKEv2.0
7 trang 158 0 0 -
5 trang 128 0 0
-
Giáo trình An toàn và bảo mật thông tin - Đại học Bách Khoa Hà Nội
110 trang 113 0 0 -
Về một giải pháp cứng hóa phép tính lũy thừa modulo
7 trang 105 0 0 -
Một số thuật toán giấu tin trong ảnh có bảng màu và áp dụng giấu tin mật trong ảnh GIF
5 trang 94 0 0