Python ile yapılabilecekler

3,152
-1

Published on

asdasd

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,152
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
74
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Python ile yapılabilecekler

  1. 1. Güvenlik denetimi yapanlar için python araçlarıGüvenlik araştırma, reverseengineering veya sızma testleri ile ilgileniyorsanız python programlamadilini denemenizi öneririm. Çok sayıda kütüphaneler ve programlara sahip. Bu sayfa bunlardanbazılarını listeliyor.Listelenen araçların çoğu Pythonda yazılmış, diğerleri ise mevcut C kütüphaneleri için Pythonbağlayıcıları (yani python programlardan bu kütüphanelere kolay erişim sağlıyorlar).Agresif araçların bazıları (pentestframework, bluetoothsmasher, webappvulnscanner, war-dialervs)çıkarıldı çünkü bu araçların kanunlara uygunluğu konusunda kesin bir bilgim yok. Bu liste beyazşapkalara yardım için hazırlandı.AğScapy - ağ paketlerini gönderme, dinleme ve işleme. İnteraktif olarak veya kütüphane olarakkullanılabilir.pycap, Pcapy ve pylibpcap - libpcap için çeşitli Python bağlayıcılarıdpkt - hızlı, basit paket yaratma parse etme, temel TCP/IP protokollerinin tanımlarına sahipImpacket - Ağ paketleri yaratma ve decode etme. NMB ve SMB gibi yüksek-seviye protokoller içindesteği de var.pynids - dinleme, IP defragmentation, TCP stream tekrar birleştirme ve port tarama tespiti sunanlibnidswrapperDirtbagspy-pcap - libpcap olmadan pcap dosyalarını okumaflowgrep - regularexpression kullanarak paket yüklerine grephttplib2 - Diğer HTTP kütüphanelerinde eksik olan çok sayıda özelliğe sahip kapsamlı bir HTTP istemcikütüphanesiKnockSubdomainScan - hedef bir alandaki alt alanları bir kelime listesi kullanarak listelerMallory - man-in-the-middleproxymitmproxy - SSL destekli, mitmproxy. Konsol arayüzünde trafik akışı geçiş anında incelenipdeğiştirilebilir.Debug ve reverseengineeringPaimei - Reverseengineeringframework, PyDBG, PIDA, pGRAPHı içeriyorImmunityDebugger - script destekli grafik arayüz ve komut satırı debuggerIDAPython - Python programlama dili ile entegre olupscriptlerin IDA Pro içinde çalıştırılabilmesinisağlayan bir IDA Pro plugini.PyEMU - IA-32 emulator, zararlı yazılım analizinde kullanışlıpefile - PortableExecutable dosyalarını okuma ve çalışmapydasm - libdasm x86 disassembling kütüphanesi için Python arabirimiPyDbgEng - Microsoft Windows Debugnig Engine için Pythonwrapperuhooker - DLLler içinden yapılan API çağrılarını yakalama ve çalıştırılabilir dosyanın hafızasındaistenilen adresler...diStorm64 - AMD64 için dissambler kütüphanesi, BSD lisanslıpython-ptrace - ptrace kullanan debugger (işlemleri trace için Linux, BSD ve Darwin sistem çağrısı)FuzzingSulley - Genişletilebilir bileşenlere sahip fuzzer geliştirme ve fuzz test framework
  2. 2. PeachFuzzing Platform - Generation ve mutation tabanlı fuzzing için genişletilebilir fuzzingframeworkantiparser - fuzz test ve faultinjection APITAOF, ProxyFuzz ile, bir mitmnon-deterministic network fuzzeruntidy - Genel amaçlı XML fuzzerPowerfuzzer - Tamamen otomatikleştirilebilen ve özelleştirilebilen wefuzzer (HTTP protoklü tabanlıuygulama fuzzer)FileP - Dosya fuzzer. Kaynak dosya listesinden mutate edilmiş dosyalar yaratır ve bunları harici birprograma verir.SMUDGEMistress - Önceden belirlenmiş patternlere göre dosya formatları ve bozuk veriye sahip protokoltestiFuzzbox - çoklu-codec medya fuzzerForensicFuzzing Araçları - fuzzed dosyalar, fuzzed dosya sistemleri yaratıp forensic araçlarının veinceleme sistemlerinin test edilmesiWindows IPC Fuzzing Araçları - Windows InterprocessCommunication mekanizmalarını kullananuygulamaları fuzz etmekte kullanılan araçlarWSBang - SOAP tabanlı web servislerinin otomatik güvenlik testiConstruct - Binary veya textual veri yapılarını parse ve inşa. Kendi veri yapılarınızı tanımlayın.fuzzer.py (feliam) - FelipeAndresManzanodan basit bir fuzzerFusil - Fuzzing programları yazmak için python kütüphanesiWebProxMon - Proxy loglarını işleyip bulunan problemleri raporlarWSMap - web servis endpointleri bulmada ve dosyaları keşfetmedeTwill - Webe komut satırından bakın. Otomatik webn testi destekliyor.Windmill - Web uygulamanızı otomatik olarak test ve debug etmenizi sağlayan web test aracıFunkLoad - Fonksiyonel ve yük testiForensicVolatility - Volatile hafıza (RAM) örneklerinden dijital bulgular çıkarmaSandMan - Windows sürümüne bağlı olmadan hibernation dosyasını okumaLibForensics - Dijital forensic uygulamaları geliştirmek için kütüphaneTrIDLib - Dosya tiplerini binary imzalarından tanıma. Artık Python bağlantısı da içeriyor.Zararlı Yazılım Analizipyew - komut satırı hexadecimaleditor ve disassembler, temelde zararlı yazılım testi içinExefilter - e-postalardaki, web sayfalarındaki veya dosyalardaki dosya formatlarını filreleme. Çoğugenel dosya tipini tespit ediyor ve aktif içeriği çıkarabiliyor.pyClamAV - Python yazılımınıza virüs tespit yetenekleri ekleyinjsunpack-n - Genel JavaScriptunpacker: browser fonksiyonlarını emüle ederek browser ve browserplug-in açıklarını hedefleyen exploitleri tespit etmek içinyara-python - zararlı yazılım örneklerini tanımlama ve sınıflandırma içinPDFDidier Stevensın PDF Araçları - PDF dosyalarını analiz, tanıma ve yaratma (PDFiD, pdf-parser,mPDFve make-pdf dahil)
  3. 3. Opaf - Open PDF Analysis Framework. PDFi analiz edilip değiştirilebilen bir XML ağacına dönüştürür.Origapy - PDF dosyalarını sanitze eden OrigamiRubymodülü için PythonwrapperpyPDF - python PDF toolkit. bilgi ayrıştırma, bölme, birleştirme, kesme, kriptolama ve dekriptolama...PDFMiner - PDF dosyalardan text çıkarmapython-poppler-qt4 - Poppler PDF kütüphanesi için Pythonbağlantısı , QT4 desteği dahilGenelInlineEgg - Pythonda küçük assembly programlar yazmak için sınıflarExomind - sosyal ağ hizmetleri, arama motorları ve anlık mesajlaşma üzerine grafikler yaratmak veaçık kaynak intelligence modülleri ve fikirleri geliştirmek içinRevHosts - Verilen IP adresi için sanal hostları listelemesimplejson - JSON kodlayıcı/dekoder ör. Google AJAX APIPyMangle - diğer sızma testi araçlarıyla kullanmak için kelime listeleri yaratma komut satırı aracı vepython kütüphanesiHachoir - Bir binarystreamfieldlerini görüntüleme ve düzenlemeDiğer yararlı kütüphane ve araçlarIPython - Object introspection ve sistem shell erişimi için kendi özel komut sistemi gibi çok sayıdaözelliğe sahip gelişmiş interaktif PythonshellBeautifulSoup - ekrandan bilgi toplama için optimize HTML parsermatplotlib - arrayların 2D plotlarını yapmak içinMayavi - 3 boyutlu bilimsel veri görselleştirme ve plotRTGraph3D - 3B dinamik grafikler yaratmaTwisted - event-driven ağ motoruSuds - Web hizmetleri için basit SOAP istemcisiM2Crypto - OpenSSLwrapperNetworkX - grafik kütüphanesi (edge,node)pyparsing - genel parse modülülxml - Python dilinde XML ve HTML ile çalışmada en zengin özelliklere sahip ve kullanımı en kolaykütüphane.Pexpect - Diğer programları kontrol ve otomatikleştirme, Don LibesExpect sistemine benzerSikuli - GUIleri ekran görüntüleri ile arama ve otomatikleştirme teknolojisi. Jython scriptler ilekullanılabiliyorPyQt ve PySide - Qtapplicationframework ve GUI kütüphanesi için Python bağlantılarıBaşka kütüphaneler için PyPI, PythonPackageIndexe bakabilirsiniz.Dirk Loss http://dirk-loss.de/python-tools.htmKaynak: http://www.olympos.net/belgeler/urun/python/guvenlik-denetimi-yapanlar-icin-python-araclari-2851314.html#ixzz2FspblzMYFollow us: @olymposnet on Twitter | olympos.net on Facebook
  4. 4. PYHTON ile SOKET PROGRAMLAMAPythonla soket programlama:1.socket modülüsocket() fonksiyonu: soketin oluşturulması için kullanılır.Ġstemci Programhost= "localhost"port= 21567buf = 1024addr = (host,port)host: Bir host ismi veya IP adresi olabilir. Ben yerel olarak programları denemek istediğim içinhost="localhost" yazdım. Sunucu internet üzerindeyse IP adresi ve ya domain name kullanılır.port: Bir numara veya sembolik servis ismi olabilir.buf: Soketten transfer edilecek verinin maximum büyüklüğünü ayarlamak için kullanılandeğişkendir.addr: Ġki elemanlı bir demettir ( tuple ). Bu değişken sunucuya mesaj gönderirken kullanılır.Soketin oluşturulması:TCPSock=socket(AF_INET, SOCK_STREAM)Bu kod haberleşmenin TCP protokolüyle yapılacağını gösterir. Bununla yapmamın sebebi FTPnin TCP üzerinde çalışması.Bu parametrelerin anlamı: AF_INET: TCP ve UDP için IPv4 protokolleri AF_INET6: TCP ve UDP için IPv6 protokolleri AF_UNIX: UNIX domain protokolleriSoket tipi,soket akışında kullanılan iletişim tipidir.Bunlar beş çeşit:SOCK_STREAM: Ġletişim tabanlı TCP byte akışıSOCK_DGRAM: Datagramların UDP ile transferi, sunucu- istemci doğrulamasına gerekduymayan kendi kendine yeten IP paketleri için...SOCK_RAW: Henüz olgunlaşmamış soketlerSOCK_RDM: Güvenilir datagramlar içinSOCK_SEQPACKET: Bağlantı üzerinden kayıtlar için bir dizi transfer.sendto() fonksiyonunu kullanarak sunucuya mesaj göndermek için kodmsg="Sunucuya gönderilecek mesaj"TCPSock.sendto(data,addr)--------------------------------------#!/usr/bin python# -*- coding:utf-8 -*-
  5. 5. fromsocketimport *# Soket parametreleri oluşturulurhost = "localhost"port = 21567buf = 1024addr = (host,port)# Soketin oluşturulmasıTCPSock = socket(AF_INET,SOCK_STREAM)def_msg = "===Sunucuya gönderilecek mesajı giriniz===";print "n",def_msg# Mesajın gönderilmesiwhile (1):data = raw_input(>> )if not data:breakelse:if(TCPSock.sendto(data,addr)):print "Sendingmessage ",data,"....."# Soketin KapatılmasıTCPSock.close()----------------------------------------------------------------------------------------Sunucu ProgramıSunucu programda socketi aynı şekilde kuruyoruz. Ġlk başta değişkenleri oluşturuyorulur:host= "localhost"port= 21567buf = 1024addr = (host,port)Soket oluşturulur:TCPSock = socket(AF_INET,SOCK_STREAM)Adresi bağlamak için gerekli kod:TCPSock.bind(addr)data,addr=TCPSock.recvfrom(buf)print data--------------------------------------------------------#!/usr/bin python# -*- coding: utf-8 -*-# Server programfromsocketimport *# Set thesocketparameters
  6. 6. host = "localhost"port = 21567buf = 1024addr = (host,port)# CreatesocketandbindtoaddressTCPSock = socket(AF_INET,SOCK_DGRAM)TCPSock.bind(addr)# Receivemessageswhile 1:data,addr = TCPSock.recvfrom(buf)if not data:print "Client has exited!"breakelse:print "nReceivedmessage ", data,""# Close socketTCPSock.close()-------------------------------------------------------------------------------------------Ben projemde öncelikle ftp protokolünü kullanacağım. Bunun için pythondaftplibmodülübulunmaktadır.Pythonda FTP istemcisi oluşturmakĠlk adım ftplibmodülünüimport etmektir.importftplib"socket" modülüarayüzeihtiyac duyan tüm python modülleri tarafından kullanılır. FTP kütüphanesibunlardan farklı değildir. FTP kütüphanesi öncelikle SOCKS modülüne dayanır, ama eğer modelbulunmazsa socket modülüne başvurulur.Bağlantının başlatılmasıPythona hangi siteye bağlanması gerektiğini söylüyoruz:ftp = ftplib.FTP(ftp://baglantikurulacaksite.com)Burada ftplib kütüphanesinin FTP sınıfından bir nesne oluşturuyoruz. Bu sınıftan bir nesneoluşturabilmek için gerekli minimum argüman sunucunun URLsidir. Bu URL başlangıç değeridirve geriye bir soket nesnesi döndürür. Bunu ftp değişkenine atadık. Eğer istersek log in bilgilerinide buradan girebiliriz. Bunun söz dizimi şöyle;handle=ftplib.FTP(host,username,passwd,account_name)Soket bağlantısı oluşturuldu ama henüz sunucuda oturum açamadık. FTP sınıfı sunucuda oturumaçmak için şöyle bir metoda sahip;ftp.login("mylogin","mypassword")Daha sonra ne yapılacağı ftp bağlantısını neden açtığımıza bağlı. ftplibmodülübinary ve textformatında saklama ve bulup getirmek için metod sağlar.Text formatı için metodlar:
  7. 7. x.storlines(command,file): satır modunda bir dosyayı saklamak için kullanılır.x.retrlines(command,callback): satır modunda bir dosyayı getirmek için kullanılır.Her method için minimum 2 argüman verilmesi lazım. Her ikiside çalıştırılacak olan komutunaçıkça deklare edilmesine gereksinim duyar.Saklamak için en yaygın komut STOR, bulup getirmek içinse RETR dir. Bunlardan başkakullanılan komutlarda vardır.Söz konusu olan her iki komutun ikinci bölümü dosya ismidir.STOR filename RETR filenameHer metodun ikinci argümanı ne yaptığımızla alakalıdır. Saklamak için dosya nesnesi getirmekiçin bir callback içerir. Bu callback dosya getirildiğinde ne yapılacağını söylemek için birfonksiyondur.Binary modeta FTP saklama (store) ve getirme (retrieve)Binary modetakimetodların söz dizimi de bir önceki ile aynı ;x.storlines(command,file[,blocksize]): satır modunda bir dosyayı saklamak için kullanılır.x.retrlines(command,callback[,blocksize[,rest): satır modunda bir dosyayı getirmek için kullanılır.Binary ve text arasında 2 önemli fark vardır.Birincisi her iki binary komutu seçimli blocksizeargümanı için olanak sağlıyor. Bu yüzdenbinarymode daha hızlıdır.Ġkincisi binaryretrieve fonksiyonlu seçimli rest argumanına sahiptir. Bu argüman bir dosyanınortasından indirmeye başlamaya yarar. Bu fonksiyon bütün FTP serverlar tarafındandesteklenmez. Eğer sunucu desteklemiyorsa bir error_reply uyarısı alınır.PYTHON ile SOSYAL AĞ ANALĠZĠRecep vaktin olduğu bir zamanda Bu videoyu izleyip sosyal ağ analizi konusunda yapılanlarıgörüp neler yapabileceğimizi tartışalım.http://www.youtube.com/watch?v=qgGqaBAEy3QAyrıca aşağıdaki linki de incele güzel bir library dosyası hakkında bilgiler varhttp://www.libsna.org/Şu linktede özellikle saldırı tespit sistemine yönelik host temelli bir kod yazılmış python ile.http://sourceforge.net/projects/pyids/ bunu da incele gerekirse bir benzerini yazıp veya bunukodunda işleyip kodun yapısına göre farklı analizler yapabilirmiyiz bakalım.

×