PENTESTER OLMAK İSTER MİSİN ?
Her şeyden önce bir Pentester olmak için sürekli olarak yeni şeyler öğrenmeye istekli olmalısınız ve ya çabucak evde olmalısınız. İkinci olarak, Ağ ve Web Güvenliği konusunda güçlü bir temel anlayışa ve en az bir kodlama / kodlama dilinin anlaşılmasına sahip olmanız gerekir. Üçüncüsü, becerilere ihtiyaç duyarsınız .Dördüncü olarak, bazen yapacağınız projelerin sıkıcı veya tekrarlayıcı olacağı gerçeğini kabul etmeye istekli olmalısınız. Beşinci olarak… Eğer hala burada okuyorsanız, o zaman bir Pentester olmak için gerekenlere sahip olduğunuza eminim, o zaman ayrıntılarına geçelim!
Teknik Beceriler:
Evet, teknik beceriler, bir Güvenlik Uzmanı’nın can damarı. Şimdi, bir Pentester olmak, sadece Network Pentesting veya Web Apps gibi tek bir şeye odaklanmanız anlamına gelmez. Aslında, bir teknik uzmanlık alanında başarılı olmak ve hatta bir Pentester olarak mükemmel olmak için geniş bir bilgi birikimine sahip olmanız gerekir.
“ Neden ki? ” Aslında, Ağ Pentest’leri, Kırmızı Takım Çalışmaları, Fiziksel Güvenlik Değerlendirmeleri ve hatta Donanım Güvenlik Değerlendirmeleri, yeni başlayanlar için çok fazla bir şey yapmıyor ve genellikle çok daha gelişmiş test kullanıcıları için planlanıyor. Ama bu, bunları yapamayacağınızı ve kendinizi kanıtladıktan sonra bunları yapmayacağınız veya daha fazlasını yapma fırsatınız olmadığı anlamına gelmez. Aynı zamanda uzmanlığınızın ne olduğuna bağlı olarak, muhtemelen bu alanda projeler yapacaksınız. Genel olarak en çok istenen değerlendirme…
Bir sonraki bölümde, bir pentester haline gelmenin (ve belirli bir düzende olmayan) en faydalı olduğuna inandığım bir dizi teknik beceri listeleyeceğim. Bu becerilerin en az 1-2’sini (Web Uygulamaları dahil) orta seviyeli olarak ve bu becerilerin en az 3 / 4’ü üst düzeyde olmak için kullanmayı bilmelisiniz.
Her bir yetenekle birlikte, neler yapabileceğinize dair kısa bir açıklama yapacağım, ardından başlamanıza ya da konu hakkında daha fazla bilgi edinmenize yardımcı olacak bir kaynak listesi vereceğim.
1. Web Uygulama Güvenliği:
Web Uygulamaları, günümüzde bir web tarayıcısı aracılığıyla kullanıcılara daha fazla yazılım uygulaması sunulduğundan günümüz organizasyonlarında hayati bir rol oynamaktadır. İnternette yapmış olabileceğiniz hemen hemen her şey bir web uygulamasının kullanımını içeriyor – bir etkinlik için kayıt yaptırmak, çevrimiçi ürün satın almak, faturalarınızı ödemek, hatta oyun oynamak olsun.
Web uygulamalarının geniş çaplı kullanımı nedeniyle, genellikle internetteki en çok saldırıya uğrayan bir varlıktır ve genellikle Panera Bread ve Equifax Breach gibi geniş çaplı bir uzlaşmaya sahiptirler .
Bu ihlallerin önlenebileceği doğru mu? Evet! Ancak sadece web uygulamaları dahili olarak veya bir danışmanlık firması tarafından iyice test edildiğinde. Yine de o zaman – bu tür güvenlik açıkları gözden kaçırılmış olabilir.
Bu neden olabilir? Dürüst olmak gerekirse, vasıfsız test ediciler, kısıtlayıcı kapsam, çok geniş bir proje süresi, çok az proje zamanı, çok fazla web uygulaması ve yeterli sayıda testçi, kaynak kodu bulunmuyor… liste uzayıp gidiyor.
Sonuçta, web uygulamalarını anlayan, nasıl oluşturulduğunu, çalıştığı, iletişim kurdukları, hangi kütüphaneleri kullandıklarını, vb., Bir web uygulamasının saldırıya açık veya ilgi çekici görünebilecek kısımlarını kolayca odaklayabilecekleri ve anlayabileceklerini anlayan yetenekli bir testçi. Test cihazı her şeyi tespit edebilecek mi? Hayır, elbette, insanüstü değiliz, ancak deneyim ve iyi bir bilgi birikimiyle, bir web uygulamasını gelecekteki saldırılardan en iyi şekilde koruyabilecek yeterli güvenlik açıklarını bulabileceksiniz.
Bir pentester olarak, WAPT’ları Banka Uygulamaları, İnternet Platformları, Barındırma Hizmetleri, Çevrimiçi Mağazalar ve daha fazlası üzerinde yapacaksınız! Dolayısıyla, XSS, SQli ve CSRF gibi temel Web Uygulama Güvenlik Açıklarından daha fazlasını anlamalısınız. XXE, XML / JSON Enjeksiyonu, LDAP Enjeksiyonu, Kör Enjeksiyon, Kod Enjeksiyonu & RCE, Alt Alan Alımı, Açık Yönlendirmeler, SSRF, LFI ve RFI gibi güvenlik açıklarını bilmeniz gerekir. Örneğin, belirli protokolleri ve bunların uygulamalarını anlamanız gerekir. OAuth ve SSO , ayrıca farklı platformların kullanımını ve Jenkins veya ElasticSearch gibi güvenlik açıklarını da anlamanız gerekir .
Buna ek olarak, bir ton WAPT’ın Kod İncelemeleri ile eşleştirilmesinden dolayı, web uygulamasının oluşturulduğu dili anlamaya da yardımcı olur. Yani Java, JavaScript, Scala, AJAX, PHP ve Ruby gibi dilleri bilmek, kara kutuda ortaya çıkamayan gizli mücevherlerin yerini bulmaya gerçekten yardımcı olacaktır .
Kaynaklar :
- OWASP WAPT Testing Guide
- OWASP Top 10
- Hacker 101
- PentesterLab Bootcamp
- HackerOne Hacktivity
- Bug Bounty Writeups
- James Kettle / albinowax Research
- Detectify Security Blog
- GracefulSecurity
- SANS Penetration Testing Blog
- The Web Application Hacker’s Handbook: Finding and Exploiting Security Flaws
- The Tangled Web: A Guide to Securing Modern Web Applications
- Apps for Testing & Practice
- SANS 2016 Holiday Hack Challenge
2. Ağ Güvenliği:
Bir Ağ Pentest’i, ağ aygıtlarında ve bunlara bağlı ana bilgisayarlarda / sistemlerde olduğu kadar, kurumsal veya endüstriyel ağlardaki güvenlik açıklarını belirlemeyi ve bunlardan yararlanmayı amaçlar. Bu tür değerlendirmeler genellikle bir bilgisayar korsanı bir şirketin iç ağına erişim sağlamak için gerçek dünyadaki bir saldırıyı simüle eder.
Şimdi, bir ağ% 100 güvenli ve güvenli olabilir mi? Tabii ki değil! Hiçbir şey% 100 güvenli değil! Örneğin, Hacking Team Breach’i ele alalım . Yeterli zaman, para ve kaynaklara sahip herhangi bir karmaşık saldırgan bir şirketi ihlal edebilir; ama bu, ağ içinde olduklarında onlar için kolay olması gerektiği anlamına gelmez!
Başka bir örnek Ukrayna’da NotPetya Malware koparma olurdu . Bu, yeterli zaman ve kaynağa sahip bilgisayar korsanlarının bir şirketten nasıl taviz verebileceğine ve diğer hedeflere karşı daha fazla saldırıya geçmek için onları nasıl kullanacaklarına dair harika bir örnektir.
Bir pentester olarak, gerçek bir ihlal riskini değerlendirmeye çalışmakla görevlendirilirsiniz. Bu, yalnızca DC’de Alan Adı Yöneticisi almayı değil , açıkta hangi türden özel verilerin korunmasız olduğunu kontrol etmekle ilgilidir .
Değerlendirme sırasında kullanıcı hesaplarının ve kimlik bilgilerinin kolay erişilebilir olup olmadığını kontrol etmelisiniz. Müşteri bilgileri ve kredi kartları kolayca erişilebilir mi? Şirketin üyeleri kimlik avı gibi güvenlik konularında ne kadar iyi eğitim görmüş? Teknolojiler ve korumalar iyi yerleştirilmiş ve uygun şekilde yapılandırılmış mı? Ve dahası!
Network Pentest’i gerçekleştirebilmek için ağların nasıl çalıştığını, TCP / IP, LDAP, SNMP, SMB, VoIP, vb. Gibi teknolojiler ve iletişim protokollerini gerçekten anlamanız gerekir. Active Directory’nin yanı sıra Güvenlik Duvarları, IDS / IPS, Sysmon, Antivirüsler, vb. Gibi korumaları anlamanızın yanı sıra, Windows ve Linux içsellerinin nasıl çalıştığını ve diğer kullanıcıları daha fazla tehlikeye atmak için nasıl kullanabileceğinizi de anlamanız gerekir.
Network Pentest’leri karmaşık ve birçok hareketli parça gerektirse de, öğrenilmesi zor değildir. Ağ çevresinde nasıl hareket edeceğine dair temel bilgileri öğrendikten sonra, geri kalan her şey deneyimle gelir – her şey gibi!
Kaynaklar :
- Windows APIs
- Red Team Tips
- The Hacker Playbook 3: Practical Guide To Penetration Testing
- Adversarial Tactics, Techniques & Common Knowledge
- AD Security
- harmj0y Blogs
- HackTheBox
- IppSec’s Videos
- Awesome Pentest
- CTF Series: Vulnerable Machines
- Windows Privilege Escalation Fundamentals
- Metasploitable
- SANS Penetration Testing Blog
- Pen Test Partners Blog
- Penetration Testing Lab
- Pentestit Lab Writeups
- SANS 2017 Holiday Hack Challenge
- Google…
3. Kod İnceleme:
Kod incelemesi, uygulamalardaki güvenlik açıklarını ve yanlış yapılandırmaları tanımlamak için muhtemelen en etkili tekniktir. Otomatik test araçlarının kullanımı ile birlikte kodun manuel olarak gözden geçirilmesi, mantık kusurları, yetkilendirme sorunları, şifreleme yanlış yapılandırmaları ve hatta enjeksiyon saldırıları gibi bir kara kutu pentest’i gerçekleştirilirken daha önce bulunmamış olabilecek kusurların tespit edilmesine yardımcı olabilir.
Kod Gözden Geçirmesinin tek dezavantajı, çok zaman alıcı olması ve tek bir test cihazının çok büyükse tüm uygulamayı kapsayacak kadar zamanının olmaması olabilir. Bununla mücadele etmek için, bir test genellikle dikkatini bilinen güvenlik açıklarına ve uygulamada yazılan dilde tehlikeli işlev çağrılarının kullanımına odaklamaya çalışır. Örneğin, C’de strcpy () işlevinin savunmasız olduğu bilinir. Arabellek taşması veya PHP’de, düzgün kullanılmadığında exec () işlevi, Uzaktan Kod Yürütülmesine yol açabilir.
Eğer kod incelemesi olmasaydı, o zaman Heartbleed , Shellshock , Drupalgeddon 2 gibi en üretken böceklerin bazıları bulunmazdı, bu yüzden kod incelemesinin ne kadar önemli olabileceğini görebilirsiniz!
Bir pentester olarak muhtemelen C, C ++, Java, JavaScript, Scala, Ruby, PHP, Python ve hatta Go kullanılarak yapılmış bir çok uygulamayı gözden geçireceksiniz. Uygulamayı ayrıntılı bir şekilde gözden geçirebilir ve temel dil ve iyi bir şekilde ortaya çıkabilecek sorunları iyi anlamak için gereken güvenlik açıklarını veya güvenlik sorunlarını bulabilirsiniz.
Bazı güvenlik açıklarının yalnızca belirli dillerde daha yaygın olduğunu unutmayın; örneğin, Bellek Taşmaları, C ve C ++ gibi alt düzey dillerde daha sonra Python ve Ruby’de daha yüksek düzey diller olduğundan daha fazla bulunabilir. Aynı zamanda , Python, Ruby ve Java’nın aksine C ve C ++ ‘da çok fazla desantralizasyon zafiyeti bulamayabilirsiniz .
Sonuç olarak, bir pentester olma yolunda ilerlemenize yardımcı olacak bir programlama dili öğrenmek gerçekten iyi bir fikir. Bu, kaynak kodunun yalnızca belirli güvenlik açıklarını gözden geçirmesine ve anlamasına yardımcı olmayacak, aynı zamanda angajman sırasında kullanılabilecek komut dosyaları ve istismarlar oluşturmanıza da olanak sağlayacaktır – ister bir Kavram Belgesi oluşturuyor olsun, isterse hemen bir fuzzer inşa edin.
Kaynaklar :
- OWASP Code Review Introduction
- OWASP Code Review Project
- 24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them
- Awesome Code Review
- Awesome Static Analysis
- Static Code Analysis Tools
- Codecademy
- Google…
4. İkili Tersine Mühendislik:
Tersine Mühendislik, bir hacker’ın bazı tuhaf eski dilleri okuduğu ve bazı büyülü sebeplerden dolayı bir istismar yarattığı veya uygulamanın nasıl işlediğini anlayamayan açıklanamayan olgular….
İkili Tersine Mühendislik, bir programın nasıl kullanılacağını veya belirli güvenlik açıklarını bulabilmesi için nasıl çalıştığını görmek için ayırma işlemidir. Bu uygulama, 0 gün arandığında veya belirli endüstrilerdeki katılımlarda veya hatta kaynak kodu sağlanmadığında sık sık püf noktaları tarafından kullanılmaktadır. Tersine mühendislik sayesinde, bir testçi, uygulamanın belirli işlemleri nasıl gerçekleştirdiğini, verileri depoladığını ve hatta IDA Pro , Binary Ninja ve hatta Radare2 gibi bir disassembler kullanarak belleğe yazdığını öğrenebilir .
Tersine Mühendislik’in kötü amaçlı yazılımların işlevlerini tam olarak anlayabilmesi için WannaCry Malware gibi Kötü Amaçlı Yazılım Analizi için kullanıldığını düşünebilirsiniz , ama durum böyle değil! Kötü amaçlı yazılım sadece başka bir program / uygulama, bu yüzden sonunda bir uygulamayı tersine çeviriyorsunuz…
Örneğin, Cisco IOS için 1 günlük istismar geliştirme , Cisco Router’lardaki bir güvenlik açığından yararlanmak için tersine mühendislik ve hata ayıklama işlemlerini kullandı. Bu, basit ve kara kutu pentesting ile yapılamayacak bir şey.
Bir pentester olarak, tersine mühendislik temellerini biliyorsanız, o zaman böyle bir bilgi gerektirecek konserlere konmasını beklersiniz. Genellikle araştırma için bilgilerinizi kullanır, 0 gün ve güvenlik açıklarını arar ve özellikle donanım gömülü aygıtlarda kaynak kodun sağlanmadığında uygulamaların nasıl işlediğini anlarsınız. Ayrıca BIOS ve SMM, Sanallaştırma, Kapsayıcılar, Güvenli Önyükleme ve daha fazlasını test edebilirsiniz! Bu işi iyi yapmak için, x86 ve x64 ASM (Assembly) Mimarisi hakkında bir bilginiz olması ve Yığın / Yığın Bellek Ayırma ile birlikte nasıl çalıştığı hakkında bilgi sahibi olmanız gerekir. Aynı zamanda, işletim sistemlerinin iç işleyişi hakkında düşük düzeyde bilgi sahibi olmak çok faydalı!
Bunun için öğrenme eğrisi genellikle çok yüksektir ve bu konuda yetkin olmak biraz zaman alır – öğrendikten sonra, cephanenizde bir nükleer bomba olarak düşünülebilir… daha sonra kendinizi tam teşekküllü bir hakzor olarak adlandırabilirsiniz!
Kaynaklar :
- Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration
- Introductory Intel x86-64: Architecture, Assembly, Applications, & Alliteration
- Intermediate Intel x86: Architecture, Assembly, Applications, & Alliteration
- Introduction To Reverse Engineering Software
- Introduction To Software Exploits
- Hacking, The Art of Exploitation 2nd Edition
- The Shellcoder’s Handbook: Discovering and Exploiting Security Holes
- HackDay: LEARN TO REVERSE ENGINEER X86_64 BINARIES
- Getting Started with Reverse Engineering
- Reverse Engineering Resources
- LiveOverflow Videos
- Exploit Exercises
5. Donanım / Gömülü Cihazlar Güvenliği:
Tersine Mühendislik’in adımlarını yakından takip etmek, Tersine Mühendislik’i gerçekten iyi bir şekilde tamamlayan Donanım / Gömülü Cihazlardır. Bunu donanım ve elektronik bilginin yanı sıra bazı ARM Mimarlık ile takip edin ve kendinize yönlendiricilerden ampullere, hatta arabalara kadar yeni cihazların parçalanmasını sağlar.
IoT cihazlarının geliştirilmesindeki artışla, artık bu tür gömülü sistemler için güvenlik konusunda artan bir ilgi ve tartışma var.
Bir pentester olarak, herhangi bir donanım veya gömülü cihaz güvenliği yapıyorsanız, SPI , şemaları , FPGA , UART , JTAG , vb. Gibi şeyleri anlamanız gerekir. Ayrıca, araçların nasıl kullanıldığını da anlamanız gerekir. multimetre , havya vb. Aynı zamanda anahtarlar, dirençler, kapasitörler ve transistörler gibi elektronik bileşenlerin anlaşılması her zaman harika!
Tersine Mühendislik gibi, büyük bir öğrenme eğrisi vardır, ancak temelleri öğrendikten sonra geri kalanı kolaylaşır ve zamanla çoklu değerlendirmeler yaptıktan sonra deneyim kazanırsınız. Dürüst olmak gerekirse, öğrenmenin en iyi yolu ateşe atlamak ve giderken öğrenmektir.
Kaynaklar :
- Introduction to ARM
- Azeria Labs – ARM Tutorials
- Introduction To Basic Electronics
- How to Read a Schematic
- Reverse Engineering Flash Memory for Fun and Benefit
- Reverse Engineering Hardware of Embedded Devices
- Practical Firmware Reversing and Exploit Development for AVR-based Embedded Devices
- DEF CON 24 Internet of Things Village – Elvis Collado – Reversing and Exploiting Embedded Devices
- Embedded Devices and Hardware Security – Introduction
- Coursera: Introduction to the Internet of Things and Embedded System
- LiveOverflow Videos – Riscure Embedded Hardware CTF
- Micro Corruption Embedded CTF
- GreatScott! Videos – Awesome Electronics Tutorials, Projects and How To’s
- EEVBlog Videos
- Hackaday Blog
- Reading Silicon: How to Reverse Engineer Integrated Circuits
6. Fiziksel Güvenlik:
Dünyanın en iyi güvenlik sistemlerine, en sağlam sistemlere ve en iyi güvenlik ekibine sahip olabilirsiniz, ancak bir saldırgan sadece sunucularınızı ön kapıdan yürütebiliyorsa, bunların hiçbirine bir şey getirilmez. Fiziksel Güvenlik devreye giriyor!
Duyulmamış bir şey, hackerların şirketlere girmesi… FRONT DOOR aracılığıyla!
Ama dürüstçe, gerçekten bu konuyu değerlendirmek için bir saniye ayırın. Bilgisayar sistemlerimizin, web uygulamalarımızın ve insan ve fiziksel boyutta güvenlik açığını göremediğimiz ağların güvenliği ile ilgili çok şey önemsiyoruz. Herkes uygun olmayan güvenlik kontrollerine sahip olan, veri çalan, kötü amaçlı yazılım üreten, hatta yıkıcı eylemler gerçekleştiren bir şirkete girebilir.
Bir pentester olarak, bir fiziksel güvenlik değerlendirmesi yapıyorsanız, psikoloji, gözetleme, kilitleme, kilitleme baypasları, RFID, kamera sistemleri ve evrensel anahtarların kullanımı gibi çok çeşitli konuları anlamanız gerekir. Genel değerlendirmeler, fiziksel bir yeri araştırmanızı, giriş / çıkış noktalarını, korumalar, kameralar, basınç sensörleri, hareket sensörleri, arka kapak savunmaları ve daha fazlası gibi yer güvenliğini detaylandırmanızı gerektirir.
Bundan sonra, kilit toplama (kapsam dahilinde), kuyruklandırma, yıkıcı giriş (nadiren kapsam dahilinde) ve hatta sosyal mühendislik gibi yöntemlerle binaya girmeniz gerekecektir. İçeri girdiğinizde, genellikle bir dizüstü bilgisayar çalmak, ya da bir dropbox’ı bağlamak gibi belirli hedefleri bir başkasının masasında oturmak gibi ..
Kaynaklar :
- Lockpicking 101
- Lockpicking – by Deviant Ollam
- Awesome Lockpicking
- TOOOL: The Open Organisation Of Lockpickers
- Lock Bypass
- Lock Wiki
- Deviant Ollam Youtube
- RFID Cloning
- UFMCS, “The Applied Critical Thinking Handbook”
- Red Team: How to Succeed By Thinking Like the Enemy
- 10 Psychological Studies That Will Boost Your Social Life
- The Ethics of Manipulation
- Psychological Manipulation Wiki
7. Mobil Güvenlik:
Android ve iOS gibi cep telefonlarının giderek artan kullanımı ile akıllı telefonlar saldırganlar için sıcak bir hedef olmaya başladı. Herkes resimlerini, belgelerini, şifrelerini, kredi kartlarını ve daha fazlasını içeren tüm yaşamlarını telefonlarında saklar! Sadece birisinin telefonundan ödün vererek, tüm hesaplarına ve hatta hayatlarına özgür saltanatımız olur.
Örneğin bu başlığı ele alalım, “ Milyonlarca Android Cihazı Kutunun Dışında Zarar Görebilir! “Çılgın, değil mi? Birçoğumuz, Google ve Apple gibi şirketlerin, eşyalarının güvenli olduğundan emin olmalarını, yani “ Google’ın Kritik Android Güvenlik Açıklarını Düzeltir ” gibi başka bir başlık görene kadar … güzel olduğunu düşünüyoruz.
Android’in StageFright’ı , Apple’ın ImageIO’su gibi güvenlik açıklarından Qualcomm gibi üçüncü taraf satıcıların bile zayıflıklarına kadar , olanaklar sınırsız! Bu tür saldırılar en güvenli kullanıcıları bile tehlikeye atabildiğinden, Mobil Güvenlik artık satıcılar, mobil uygulamalar ve çekirdek işletim sistemi için yapılan bitmeyen araştırma ve güvenlik değerlendirmeleriyle sıralarına yükseldi.
Bir pentester olarak, eğer Mobil Güvenlik yapıyor olacaksanız, o zaman ARM Mühendislik’i, tersine mühendislik uygulamaları ve çekirdek işletim sistemi ile çok şey göreceğiniz şey olarak anlamanız gerekir. Android için Java ve Android Runtime’ı öğrenmek ve anlamak en iyisidir , ancak iOS için Swift ve Objective-C’yi öğrenmeniz gerekir .
Günde genellikle ya tersine mühendislik uygulamaları, kaynak kodu gözden geçirme, mobil web uygulaması pentest’leri, hatta tersine mühendislik ve ana işletim sistemini güvenceye alın! Ayrıca, SMS veya MMS protokolleri ve uygulamaları için Bluetooth veya Wi-Fi gibi telefonun diğer bölümlerine de saldırıyor olabilirsiniz!
Kaynaklar :
- Mobile Security Wiki
- Awesome Mobile Security
- The Mobile Application Hacker’s Handbook
- Android Hacker’s Handbook
- iOS Hacker’s Handbook
- iOS Application Security: The Definitive Guide for Hackers and Developers
- Android Security Internals: An In-Depth Guide to Android’s Security Architecture
- Azeria Labs – ARM Tutorials
- Reverse-Engineering iOS Apps: Hacking on Lyft
- Reverse Engineering iOS Apps – iOS 11 Edition (Part 1)
- Beginners Guide to Reverse Engineering Android Apps
- Reverse Engineering APIs from Android Apps?—?Part 1
- Reverse Engineering Android APK’s