{"id":3510,"date":"2011-06-16T13:16:07","date_gmt":"2011-06-16T10:16:07","guid":{"rendered":"http:\/\/blog.lifeoverip.net\/?p=3510"},"modified":"2011-06-16T15:09:27","modified_gmt":"2011-06-16T12:09:27","slug":"complexity-is-the-enemy-of-security-really","status":"publish","type":"post","link":"http:\/\/blog.lifeoverip.net\/2011\/06\/16\/complexity-is-the-enemy-of-security-really\/","title":{"rendered":"Complexity is the enemy of Security, Really!"},"content":{"rendered":"

Ge\u00e7ti\u011fimiz hafta bug\u00fcn lifeoverip.net sayfas\u0131n\u0131 zorunlu olarak bir saatli\u011fine baz\u0131 arkada\u015flara kiralamak zorunda kald\u0131k. \u00a0Vakit bulamad\u0131\u011f\u0131m i\u00e7in detaylar\u0131n\u0131 buraya aktaramad\u0131m, sa\u011fda solda duyan arkada\u015flar da birinci a\u011f\u0131zdan bilgi sahibi olsunlar diye yaz\u0131yorum.<\/p>\n

Ge\u00e7en hafta Ankara’dayd\u0131m. Hem bir konferansta konu\u015fmak hem de Anonymous sald\u0131r\u0131lar\u0131 ile ilgili baz\u0131 toplant\u0131lar kat\u0131lmakt\u0131 amac\u0131m. Per\u015fembe g\u00fcn\u00fc BTYD’de <\/a>konu\u015fma yaparken birileri telefona “hocam sayfaya birileri mesaj b\u0131rakm\u0131\u015f size ula\u015fmaya \u00e7al\u0131\u015f\u0131yoruz” diye bilgi notu g\u00f6nderdi.<\/p>\n

Gariptir ki konu\u015fmada tam da hackerlar\u0131n motivasyonu, g\u00fcvenlikcilerin yapt\u0131\u011f\u0131 basit hatalardan bahsediyordum. Bunun \u00fczerine b\u00f6yle bir olay\u0131 ya\u015famak “terzi kendi d\u00f6k\u00fc\u011f\u00fcn\u00fc dikemez ata s\u00f6z\u00fcn\u00fc” ak\u0131llara getirmi\u015f olabilir. Evet \u00e7ok fazla sistem olunca, \u00e7ok fazla sisteme \u00e7ok fazla i\u015f yapman\u0131z gerekti\u011finde bu tip s\u0131k\u0131nt\u0131lar olabiliyor.<\/p>\n

S\u0131k\u0131nt\u0131n\u0131n \u00a0sebebi(nam-\u0131 di\u011fer nas\u0131l hacklendik?<\/strong>: Bundan 4-5 y\u0131l kadar \u00f6nce sistemlerine g\u00fcvenlik deste\u011fi verdi\u011fim bir firma vard\u0131. Lifeoverip.net’in dNS’lerini de bu firmada tutuyordum, nas\u0131l olsa ben bak\u0131yorum, \u00f6nlemleri daha iyi al\u0131r\u0131m d\u00fc\u015f\u00fcncesiyle.(Firma yetkililerinin bilgisi dahilinde:) \u00a0Sonra firma ile dan\u0131\u015fmanl\u0131k anla\u015fmam\u0131z bitti, ben de “tembellik” edip dnsleri o firmadan ta\u015f\u0131mad\u0131m..<\/p>\n

\u015eimdi g\u00f6r\u00fcyorum ki \u00fc\u00e7 y\u0131ld\u0131r pek g\u00fcncellenmemi\u015f firman\u0131n sistemi:). Arkada\u015flar DNS sunucuya s\u0131z\u0131p oradan dns kay\u0131tlar\u0131yla oynayarak lifeoverip.net’i dns makinesine y\u00f6nlendirip do\u011frudan mesajlar\u0131n\u0131 sayfaya yazm\u0131\u015flar.\u00a09-10 y\u0131ld\u0131r bu sekt\u00f6r\u00fcn i\u00e7indeyim, basit hatalarla \u00e7ok s\u0131k\u0131nt\u0131lar \u00e7ekildi\u011fini g\u00f6rd\u00fcm, raporlad\u0131m ama i\u015fte insan kendi sistemi olunca tembellik yapabiliyor…<\/p>\n

Hacklenmeyen, %100 g\u00fcvenli sistem var m\u0131d\u0131r?<\/strong><\/p>\n

Bu i\u015fin i\u00e7inde olan, biraz teknik bilgisi olan kimse boyle bir idiada bulunamaz.<\/p>\n

 <\/p>\n

Konu hakk\u0131nda \u00e7ok konu\u015fulup onlarca bahane \u00fcretilebilir, yapanlara lamer denilebilir, mahkemeye verilebilir vs vs. Bunlar bu konuyla ilgili s\u0131radan ki\u015filerin yapaca\u011f\u0131 i\u015flerdir. Bir g\u00fcvenlikci olarak laf\u0131 e\u011fip b\u00fckmeden hatal\u0131 oldu\u011funuzu kabul edeceksiniz ve ya\u015fan\u0131lan olaydan ders \u00e7\u0131kar\u0131p ona g\u00f6re sistemlerinizi daha g\u00fcvenli hale getireceksiniz. Ben bu gibi durumlarda yapan ki\u015filere yapt\u0131klar\u0131 \u015feyin illegal oldu\u011funu hat\u0131rlat\u0131r\u0131m sadece, yoksa benim bir hatam\u0131 yakalayarak bunu uygun bir dille ifade edene te\u015fekk\u00fcr ederim.<\/p>\n

 <\/p>\n

 <\/p>\n

Arkada\u015flardan gelen olay detaylar\u0131n\u0131 noktas\u0131na kar\u0131\u015fmadan buraya aktar\u0131yorum…<\/strong><\/p>\n

Hedef sistem bir reseller sunucu \u00fcstelik bir g\u00fcvenlik uzman\u0131na ait\u00a0t\u00fcm g\u00fcvenlik ayarlar\u0131 yap\u0131land\u0131r\u0131lm\u0131\u015f bir sunucu oldu\u011fu i\u00e7in\u00a0direk 1.\u015fah\u0131s sunucu endeksli \u00e7al\u0131\u015fman\u0131n zor olaca\u011f\u0131n\u0131n fark\u0131ndayd\u0131k. <\/em><\/p>\n

Bu y\u00fczden bir sayfay\u0131 indexlemenin birden fazla yolu oldu\u011funu bilincinde\u00a0olarak di\u011fer yollar\u0131 aramaya ba\u015flad\u0131k.\u00a0Domain firmas\u0131n\u0131 hackleyerek dns hijacking yap\u0131labilirdi fakat domain<\/em>
\n firmas\u0131 g\u00fcvenli oldu\u011fundan dolay\u0131 bu yol en son d\u00fc\u015f\u00fcn\u00fclecek \u015feydi.\u00a0Her ne kadar godaddy de olsa godaddy de ki xss a\u00e7\u0131\u011f\u0131m\u0131z\u0131 bir\u00a0g\u00fcvenlik uzman\u0131n\u0131n \u00fczerinde kaynaktaki token i al\u0131p xsrf ile birle\u015ftirmek\u00a0olduk\u00e7a zordu ve kar\u015f\u0131daki ki\u015fiyle birebir ileti\u015fime ge\u00e7meden\u00a0ve sosyal m\u00fchendislik dahi kullanmadan bunu tamamen sunucu endexli<\/em>
\n yapman\u0131n daha g\u00fczel olaca\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnerek vazge\u00e7tik. <\/em><\/p>\n

Ve sunucuyu analiz etmeye ba\u015flad\u0131k.\u00a0Sunucunun T\u00fcrkiye’de ve dolay\u0131s\u0131yla \u0130stanbul’da isim yapm\u0131\u015f bir firmaya ait olmas\u0131<\/em>
\n bizi korkutmad\u0131\u011f\u0131 i\u00e7in denenebilecek y\u00f6ntemler hakk\u0131nda da en k\u00fc\u00e7\u00fck\u00a0ayr\u0131nt\u0131y\u0131 basite almay\u0131p deneme yoluna gidiyorduk.<\/em>
\n Hedefteki sunucu reseller ip yi analiz ettikten sonra\u00a0ns adresleri ns3.hedefsunucu.com ve ns4.hedefsunucu.com u g\u00f6steriyordu.<\/em>
\n whois.domaintools.com dan resellerin ip yi detayl\u0131 inceledikten sonra\u00a0kom\u015fu ip lerde ns leri ayn\u0131 adrese y\u00f6nlendirilmi\u015f fakat ip dilimlemelerinin\u00a0farkl\u0131 oldu\u011funu g\u00f6rd\u00fck. Bu dns servislerinin tan\u0131mland\u0131\u011f\u0131 bir sunucu bu serverlardan\u00a0birinde olmal\u0131yd\u0131. E\u011fer dns servisleri hedefimizdeki sunucu da dahi olsa<\/em>
\n bu yola yine gitmeliydik \u00e7\u00fcnki deneyece\u011fimiz y\u00f6ntemlerin i\u00e7inde\u00a0yan sunuculardan birine girerek network sniffing yaparak a\u011fdaki paketleri\u00a0toplamak vard\u0131. E\u011fer g\u00fcvenlik uzman\u0131m\u0131z buna kar\u015f\u0131 bir \u00f6nlem almad\u0131ysa\u00a0ba\u011flant\u0131l\u0131 network lerden birine girerek paketlerin aras\u0131nda en k\u00fc\u00e7\u00fckte\u00a0olsa bir detay yakalayabilirdik. Bu y\u00fczden hedef sunucunun t\u00fcm<\/em>
\n ip dns dilimlemelerine girdik ns1 n2 ns3 ns4 . . .\u00a0Girdi\u011fimiz ns3 ve ns4 e y\u00f6nlendirilmi\u015f sunuculardan bir tanesi<\/em>
\n Linux 2.6.18-238.1.1.el5 #1 2008 i686 GNU\/Linux\u00a0\u00f6zelliklerindeydi ve bu sunucunun x86 olanlar\u0131n\u0131 2011 e kadar t\u00fcm \u00e7ekirdeklerini rootlamak<\/em>
\n bizim i\u00e7in kolayd\u0131 ve bu sunucuya ait root exploitimizle\u00a0root olduk.root olduktan sonra root \u015fifresini de\u011fi\u015ftirmek pek mant\u0131kl\u0131 de\u011fildi.<\/em>
\n \u00c7\u00fcnki WHM \u015fifresi vs de\u011fi\u015fiyor farkedilmesi \u00e7ok k\u0131sa s\u00fcrebilirdi.\u00a0useradd komutu da sunucuda kald\u0131r\u0131lm\u0131\u015ft\u0131. Fakat useradd komutunu aray\u0131nca<\/em>
\n sunucuda farkl\u0131 bir yere gizlenmi\u015f oldu\u011funu bulduk ve buran\u0131n \u00fczerinden \u00e7al\u0131\u015ft\u0131rd\u0131k.\u00a0Sunucuda dns sisteminin burada tan\u0131mlanm\u0131\u015f oldu\u011funu g\u00f6r\u00fcnce<\/em>
\n acele ederek direk dns config dosyas\u0131n\u0131 editlemek gibi bir hataya d\u00fc\u015ft\u00fck. <\/em><\/p>\n

; cPanel first:11.24.5-STABLE_38506 latest:11.24.5-NIGHTLY_38436 Cpanel::ZoneFile::VERSION:1.2 mtime:1258914542 hostname:ns3.hedefsunucu.com<\/em><\/p>\n

; Zone file for lifeoverip.net<\/em>
\n $TTL 14400<\/em>
\n lifeoverip.net. 86400 IN SOA ns3.hedefsunucu.com. yonetim.hedefsunucu.com.<\/em>
\n (<\/em>
\n 2009112209 ;Serial Number<\/em>
\n 86400 ;refresh<\/em>
\n 7200 ;retry<\/em>
\n 3600000 ;expire<\/em>
\n 86400 ;minimum<\/em>
\n )<\/em>
\n lifeoverip.net. 86400 IN NS ns1.yonlendirilensunucu.net.<\/em>
\n lifeoverip.net. 86400 IN NS ns1.yonlendirilensunucu.net.<\/em>
\n lifeoverip.net. 1440 IN A 84.51.38.170<\/em>
\n localhost 14400 IN A 127.0.0.1<\/em>
\n lifeoverip.net. 14400 IN MX 0 lifeoverip.net.<\/em>
\n mail 1400 IN CNAME lifeoverip.net.<\/em>
\n www 1400 IN CNAME lifeoverip.net.<\/em>
\n ftp 14400 IN CNAME lifeoverip.net.<\/em>
\n lifeoverip.net. 14400 IN TXT “v=spf1 a mx ptr ~all”<\/em>
\n ctf 14400 IN A 84.51.38.170<\/em>
\n blog 1400 IN A 84.51.38.170<\/em>
\n netsec 1400 IN A 178.18.197.18<\/em>
\n bilgiguvenligi IN CNAME www.bga.com.tr.<\/em>
\n bilisimguvenligi IN CNAME www.bga.com.tr.<\/em>
\n siberguvenlik IN CNAME www.siberguvenlik.org.<\/em><\/p>\n

Config dosyas\u0131nda yap\u0131lan k\u00fc\u00e7\u00fck bir yanl\u0131\u015f t\u00fcm sunucuya m\u00e2l oldu ve hedefimizdeki\u00a0sunucunun ayarlar\u0131 bozuldu ve a\u00e7\u0131lmaz duruma geldi. Bu s\u00fcre i\u00e7erisinde configi eski haline getirmekte\u00a0ba\u015far\u0131s\u0131z olunca bu olaydan vazge\u00e7mek yerine \u00fczerine gitmeyi tercih ettik ve\u00a0root oldu\u011fumuz sunucumuzda yeni bir hosting a\u00e7\u0131p ba\u015ftan dns dilimlendirmesi<\/em>
\n yapmaya karar verdik ve bu \u015fekilde hem hostu kendi \u00fczerimize kayd\u0131rm\u0131\u015f olacakt\u0131k\u00a0hem de resellere ait t\u00fcm makinalar elimizde olacakt\u0131 diye d\u00fc\u015f\u00fcnd\u00fck.<\/em><\/p>\n

Fakat ilk \u00f6nce denememiz gereken ba\u015fka bir \u015fey vard\u0131.<\/em>
\n \/var\/named k\u0131sm\u0131ndan lifeoverip.net.db yi silip<\/em>
\n \/etc\/named.conf k\u0131sm\u0131ndanda lifeoverip.net ile ilgili k\u0131sm\u0131 sildikten sonra<\/em>
\n WHM den lifeoverip.net e yeni bir host a\u00e7may\u0131 denemek mant\u0131kl\u0131 olabilirdi.<\/em>
\n Bunu denedikten sonra yeni hostun a\u00e7\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fck ve a\u00e7\u0131lmayan sunucuda<\/em>
\n index of\/ yaz\u0131s\u0131n\u0131 g\u00f6rd\u00fck \ud83d\ude42<\/em>
\n Bu da demek oluyor ki son mant\u0131kl\u0131 buldu\u011fumuz \u015fey olmu\u015f ve lifeoverip.net e<\/em>
\n yeni bir host a\u00e7\u0131lm\u0131\u015ft\u0131.<\/em>
\n Daha sonras\u0131ndan geriye zaten herhangi bir host bilgisiyle ( cpanel , ftp vs vs )<\/em>
\n ba\u011flan\u0131p index atmak kal\u0131yordu. Bu k\u0131sm\u0131 mail ile yapmam\u0131z\u0131n daha do\u011fru olaca\u011f\u0131n\u0131<\/em>
\n d\u00fc\u015f\u00fcn\u00fcrken bir anda aram\u0131zdaki anla\u015fmazl\u0131k y\u00fcz\u00fcnden kendimizi index atm\u0131\u015fken bulduk.<\/em>
\n \u0130ndexteki laflar\u0131n a\u011f\u0131r oldu\u011funu belirterek \u00fczg\u00fcn oldu\u011fumuzu belirtiriz.\u00a0Umar\u0131m Huzeyfe \u00d6nal bey gibi birinine, g\u00fcvendi\u011fi firmalar konusunda D\u00fcnyan\u0131n en iyisi<\/em>
\n dahi olmas\u0131 veya ba\u015fka t\u00fcrl\u00fc g\u00fcven verici tatmin edici \u00f6zellikleri olmas\u0131\u00a0yanl\u0131\u015f\u0131na kap\u0131lmadan g\u00fcvenilen ki\u015finin tamamen elinde olan\u00a0sistemin kendisi olmas\u0131 gerekti\u011fi vurgusunu belirtebilmi\u015fizdir…<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"

Ge\u00e7ti\u011fimiz hafta bug\u00fcn lifeoverip.net sayfas\u0131n\u0131 zorunlu olarak bir saatli\u011fine baz\u0131 arkada\u015flara kiralamak zorunda kald\u0131k. \u00a0Vakit bulamad\u0131\u011f\u0131m i\u00e7in detaylar\u0131n\u0131 buraya aktaramad\u0131m, sa\u011fda solda duyan arkada\u015flar da birinci a\u011f\u0131zdan bilgi sahibi olsunlar diye yaz\u0131yorum.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[23],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/posts\/3510"}],"collection":[{"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/comments?post=3510"}],"version-history":[{"count":5,"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/posts\/3510\/revisions"}],"predecessor-version":[{"id":3522,"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/posts\/3510\/revisions\/3522"}],"wp:attachment":[{"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/media?parent=3510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/categories?post=3510"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.lifeoverip.net\/wp-json\/wp\/v2\/tags?post=3510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}