WebScarab-BeanShell ile Yakalanmışı Yakalamak
İstemci-sunucu tabanlı uygulamaları analiz etmek için sık kullanılan yollardan birisi de kişisel vekil* kullanmaktır. Böylece istemci tarafındaki uygulama ile (genellikle bir İnternet tarayıcısı) sunucu tarafındaki uygulama arasında geçen trafiği (HTTP/S) gözlemlemek mümkün olur.
Bu tür analizlerde karşılaşılabilecek bir durum, istemci tarafındaki uygulamanın (mesela bir JNLP uygulaması) sunucu tarafındaki uygulamaya göndermek istediği veriyi önce (tek yönlü olmayan) bir işlemden geçirmesidir. Öyle ki, bu işlem, veri yakalandığında hızlı (on the fly) analiz yapmayı güç hatta imkansız hale getirir. Ağ gidiş geliş hızını (round-trip time) azaltmak için istemcinin ve sunucunun veriyi göndermeden önce sıkıştırması bir örnek olarak verilebilir.
Analiz edenin (denetçi, saldırgan) böyle bir durumda yapması gereken iki şey vardır. İlk yöntem, kişinin yakaladığı veriyi kopyalayıp, üzerine istemci tarafından yapılan veri değişim işleminin tersini (mesela, sıkıştırma ise açma) uygulayıp, elde ettiği veriyi yakaladığı orijinal veri ile değiştirmek olacaktır. Aynı şekilde sunucunun cevabını da bu işlemden geçirmelidir. Diğer bir yöntem ise bunu otomatik olarak yapabileceği bir araç bulmak/yazmaktır.
Bu problem doğrultusunda bu notta bahsedeceğimiz yöntem Webscarab [3] kişisel vekilinde bulunan Bean Shell eklentisini kullanmaktır. Beanshell [1] java ile java için yazılmış hafif sıklet bir betik (******) dilidir. Webscarab'daki Bean Shell eklentisi istek cevapların betiksel olarak değiştirilmesine yarayan bir alt-bileşendir. Basit olarak, eklentinin çalışma prensibi resimde görülebilir.
Problemin bir çözümü, bir Beanshell betiği yazılarak, isteğin yakalanması (yakalanmış isteğin tekrar yakalanması) sonrası istemcinin uyguladığı değişim algoritmasının tersi uygulanarak analiz edene gösterilmesi, son olarak da yapılabilecek muhtemel değişikliklerin sunucuya gönderilmesiyle gerçekleştirilebilir. Bunun için örnek bir Bean Sheel eklenti kodu aşağıda görülebilir.
/* Please read the JavaDoc and/or the source to understand what methods are available */
import org.owasp.webscarab.model.Request;
import org.owasp.webscarab.model.Response;
import org.owasp.webscarab.httpclient.HTTPClient;
import java.io.IOException;
// this is possible only with bsh2.01b
class Interceptor extends JDialog implements ActionListener {
JTextArea inputField;
JButton okButton;
JButton cancelButton;
String value;
JScrollPane scrollPane;
public Interceptor() {
setModal(true);
JPanel topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
inputField = new JTextArea(30,80);
inputField.setEditable(true);
scrollPane = new JScrollPane(inputField, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
topPanel.add(scrollPane, BorderLayout.CENTER);
okButton = new JButton("OK");
okButton.addActionListener(this);
cancelButton = new JButton("Cancel");
cancelButton.addActionListener(this);
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 10));
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
pack();
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent e) {
if( e.getSource() == okButton ) {
value = inputField.getText();
}
dispose();
}
public String getValue(String input, String title){
inputField.setText(input);
setTitle(title);
setVisible(true);
return value;
}
}
dlg = new Interceptor();
public byte [] deflate(byte [] src){
return src;
}
public byte [] inflate(byte [] src){
return src;
}
public Response fetchResponse(HTTPClient nextPlugin, Request request) throws IOException {
byte [] requestContent = null;
byte [] responseContent = null;
byte [] deflated = null;
String inflated = null;
if("POST".compareToIgnoreCase(request.getMethod()) == 0){
requestContent = request.getContent() ;
inflated = new String(inflate(requestContent), "ISO-8859-9");
manipulated = dlg.getValue(inflated, "request"); // block the traffic, waits for the user input
deflated = manipulated.getBytes("ISO-8859-9");
request.setContent(deflated);
}
response = nextPlugin.fetchResponse(request);
if("POST".compareToIgnoreCase(request.getMethod()) == 0){
responseContent = response.getContent();
inflated = new String(deflate(responseContent), "ISO-8859-9");
dlg.getValue(inflated, "response"); // block the traffic, waits for the user to see the response
}
return response;
}
Interceptor sınıfı (class) yakalanan verinin, ters değiştirme işleminden geçirildikten sonra analiz edene gösterilmesini sağlayan arayüzdür. Bu sınıf Java dilinde JDialogInterceptor arayüzü ile gösterilen verinin gönderilmeden önce kullanıcıyı (analiz eden kişiyi) beklemesi gerektiğindendir. Kullanıcının ters işlem uygulanmış veriye değişiklik yaptıktan veya bu veriyi sadece analiz ettikten sonra onaylaması belirtilen problemin amacıdır. sınıfından türetilir. Bunun nedeni
Kodda daha sonra gelen satır;
dlg = new Interceptor();
hem bu sınıfa ait bir obje oluşturur hem de Beanshell'in özelliklerinden birini kullanır. Bu özellik dilde tür zorunluluğunun (explicit type coercion) olmamasıdır.
Daha sonra gelen iki metod uygulanacak ters işlemlerin basit bir iskeletini içerir. Veri üzerinde uygulanacak asıl işlem işte bu metodlar içerisinde bulunacaktır:
public byte [] deflate(byte [] src) ...
public byte [] inflate(byte [] src) ...
Son olarak fetchResponse metodu veri yakalanması durumunda Webscarab tarafından çağrılan metoddur. Bu metodu belirtildiği gibi değiştirilerek yukarıda belirtilen işlemler yapılabilir ve arayüz gösterilebilir. Belirtilen implementasyon daha detaylı ve kapsamlı hale getirilebilir. Bu iş için gerekli metodlar [2];
İstek metodları:
- String getMethod()
- void setMethod(String method)
- HttpUrl getURL()
- void setURL(HttpUrl url)
- void setURL(String url) throws MalformedURLException
- String getVersion()
- void setVersion(String version)
Cevap metodları:
- String getVersion()
- void setVersion(String version)
- String getStatus()
- void getStatus(String status)
- String getMessage()
- void setMessage(String message)
- String getStatusLine()
Ve istek ve cevap ortak metodları:
- String[] getHeaderNames()
- String getHeader(String name)
- void setHeader(String name, String value)
- void addHeader(String name, String value)
- void deleteHeader(String name)
- NamedValue[] getHeaders()
- void setheaders(NamedValue[] headers)
- byte[] getContent()
- void setContent(byte[] content)
Yazılan Beanshell kodu kullanılarak yakalanan bir resim aşağıdadır.
Son olarak, yukarıdaki izlenen yolun dezavantajları listelenip daha modüler bir çözümden bahsedilebilir.
Interceptor sınıfının bean shell ile yazılması, betiğin diğer kısımlarında yapılacak bir değişikliğin Webscarab'a uygulanmasında (COMMIT) hata alınmasına neden olacaktır (Duplicate class exception). Bunu engellemek ve daha modüler bir yapı için Interceptor sınıfı bir jar halinde derlenerek, Webscarab sınıf yoluna (classpath) eklenebilir [Bu konu hakkında yardım için yukarıdaki e-mail adresi yolu ile bana ulaşabilirsiniz]. Daha sonra Bean Shell eklenti kısmında bu kütüphane (library) betiğe dahil edilerek normal bir sınıf şeklinde kullanılabilir;
/* Please read the JavaDoc and/or the source to understand what methods are available */
import org.owasp.webscarab.model.Request;
import org.owasp.webscarab.model.Response;
import org.owasp.webscarab.httpclient.HTTPClient;
import java.io.IOException;
import com.urgun.Interceptor;
...
public byte [] deflate(byte [] src) ...
public byte [] inflate(byte [] src) ...
public Response fetchResponse(HTTPClient nextPlugin, Request request) ...
* Bu amaç için kullanılan bir çok araçtan bir kaçı; Paros, Burp Suite, Suru, Fiddler, Firebug, Live HTTP Headers, Achilles, Ethereal (Wireshark) ve Webscarab. Bir çok ticari web açıklık tarayıcısı da bu tür yakala/değiştir alt-bileşenleri içerdiği gibi sadece bu amaca hizmet eden ev yapımı araçlar yazılabilir.
Referanslar:
- [1] http://www.beanshell.org/
- [2] Webscarab, Help, Chapter 6 - Appendix
- [3] dawes.za.net/rogan/webscarab/
Kalıcı Bağlantı Yorum (yok) Yorum yaz!
İzle ve Dinle Olan Sitelerden Mp3 vb Çalma Teknikleri :)

Aşağıdaki size uygun alternatif siteden programı indirebilirsiniz.
http://rapidshare.com/files/93912225/IDM_5.12.8_Portable_by_mechodownload.rar
-----------------------------------or----------------------------------------
http://www.filefactory.com/file/4c6e63/
-----------------------------------or----------------------------------------
http://www.megaupload.com/?d=QUEVLGSR
-----------------------------------or----------------------------------------
http://d01.megashares.com/?d01=9a76061
Pass : mechodownload


Anlatımı PDF formatında bakmak için TIKLAYINIZ
Bu yazıyı sitenize ekleyebilirsiniz. Bilgi paylaştıkca güzeldir.
Teşekkürler..
Kalıcı Bağlantı Yorum (yok) Yorum yaz!
Pando'dan Nasıl Download Yapılır?
Pando'dan Nasıl Download Yapılır?
BASİT ANLATIMPando kullanım izni ücretsiz bir yazılımdır.
Pando sayesinde, istediğiniz boyuttaki herhangi bir
dosyayı indirebileceksiniz.

*** Pando Nasıl Kullanılır? ***
Size verilmiş olan Pando paylaşımına TıkLa'dığınız zaman
karşınıza direk aşşağıda resimdeki pencere açılacaktır ki
tek yapmanız gereken Download'a basmak

Dosya otomatik olarak BelgelerimMy Pando Packages dosyasına indirilecektir; isterseniz dizini değiştirebilirsiniz.
Pando Servere başlandıktan sonra dosyası indiriyor.
indirme hızı gerçekten çok iyi..
DOWNLOAD PANDO
Full Anlatım
Pando Nedir?
Pando dosylarımızı e-posta hesaplarımıza yükleme boyutu (attacment size) sınırı olmadan istediğimiz büyüklükte göndermemizi sağlıyor. Yani e-posta sistemlerinin yükleme boyutu sınırını by-pass yöntemi ile etkisizleştiriyor. Bu sayede tek parça olarak gönderdiğimiz dosyaları tekrar tek parça olarak yükleme olanağına sahip oluyoruz.
Soru:
E-posta hesaplarına yükleme işlemi daha önceden p2m programı tarafından kullanılıyordu, ve parçaları tek tek çekip birleştiriyorduk, peki bu nasıl olacak?
Cevap: Bu sistemde parça birleştirme gibi bir olay yok, program dosyayı tek parça olarak bilgisayarınıza indirecektir. Yani şu parça eksik gelmiş bu parça eksik gelmiş gibi bir sorununuz olmayacak. Bu prog.ramın en büyük avantajlarından birisi de bu.
Soru:
E-posta servislerine yüklemede kullanılan p2m programında hesap ve şifreler veriliyordu. Bu hesaplar bazen bloke oluyordu, diğerlerini denemek zorunda kalıyorduk, buda bazen çok sinir bozucu oluyordu. Bu sistemde de benzeri birşey mi?
Cevap: P2M ve onun eklentisi olan programlara göre ikinci büyük avantajı : bu sistemde herhangi bir e-postaya giriş yapmanıza gerek yoktur. İndireceğiniz küçük (ortalama 20 kbayt) boyutlu "pando" dosyasını çalıştırdığınız zaman program download a kendi kendine başlayacak ve size herhangi bir işlem sıkıntısı vermeyecektir.
Soru:
Download hızı ne kadardır?
Cevap: Biz 7 farklı makinede 256 kbps, 512 kbps ve 2 mbps hızlarında test ettik , ve hepsinde tam hızda indirme sağladığını gördük.
Soru:
P2M programında belli başlı bazı e-postalrı kullanabiliyorduk peki bunda hangi e-postaları kullanabileceğiz.
Cevap: İstediğiniz tüm e-posta servislerini kullanabilirsiniz. Bu prog. herhangi bir sınırlama getirmemektedir..
B u program upload yapmak isteyenlerede çok büyük avantajlar sağlıyor.
1: avantaj olarak upload ınızı istediğiniz yerde kesebilirsiniz, tekrar uploada başladığınızda kaldığınız yerden devam edebilirsiniz.
2: avantajı ise upload hızınızı istediğiniz hıza göre ayarlayabilirsiniz. Bu sayede upload yaparken inernet veriminiz düşmemiş olacaktır.
Bu iki avantaj bu iki sorundan dolayı upload yapamayanların sorunlarını da ortadan kaldırmış oluyor.
NasıL KuLLanıLır? Ve DownLoad
Öncelikle pando programımızı indirelim:
http://www.pando.com/download sayfasından e-posta adresimizi girerek işletim sistemimize uygun "pando" yu indiriyoruz.
Programı kuruyoruz.
programımızı çalıştırdık: karşımıza programımız geldi.
Sol en alt tarafta alttaki resimde görüldüğü gibi "offline" yazacaktır.

bu yazıya tıklıyoruz.Alttaki resimdeki ekran açılacaktır

Daha henüz programı ilk defa kullandığımız için sisteme kayıt olmamız gerekmektedir. "new user" e tıkla***** kayıt olma sayfasına gidiyoruz.
Bu sayfada kendimize bir kullanıcı adı ve şifre oluşturuyoruz. Buraya gireceğimiz e-posta kendi kullandığımız bir e-posta olmalıdır. Çünkü aktivasyon kodu gelecek o e-postaya.
Bu işlemleri hallettik ve programımızı çalıştırarak giriş yaptık.
Not: buraya kadarki anlatım tek bir seferliktir, anlatımın uzun sürdüğü kadar işlemler uzun sürmeyecektir, bir kaç dk. içinde tamamlayacaksınız. Her dosya için tekrardan bu işlem yapılmayacak, sadece ilk kullanımda yapılacaktır.
İndirmiş olduğumuz pando dosyasını çalıştırıyoruz.
Dosyayıı çalıştırdığımızda alttaki ekran gelecek.

Burdaki "download all" butonuna tıklıyoruz ve download başlıyor
UPLOAD
Pando programını açtığımızda "send new" butonuna tıklıyoruz.
Karşımıza üstteki ekran gelecek. Bunun sol ortadaki "içiçe iki üçgen" butonuna basarsanız sola doğru bir pencere açılacaktır.
Burdan herhangi bir klasör yada dosyayının üstüne iki tık yapmanız yeterlidir, yada dosyaya bir kere tıkladıktan sonra en üstteki "ataç" simgesine tıklamanız yeterli.
Dosyamızı seçtik.
"To:" yazan yere kullandığımız bir e-postamızı yazalım (kullandığımız e-postayı yazıyoruz çünkü upload ımız bittikten sonra o e-postaya girip eklenti olarak yollanmış küçük pando dosyasını indireceğiz, ve paylaşıma bu dosyayı sunacağız.)
"package name" buraya dosyay vermek istediğimiz ismi yazalım.
alt da "subject" ve "message " var , buraya eğer biz bu dosyayı bir arkadaşımıza gönderiyorsak oraya istediğimizi yazabiliriz. burda yazanlar dosya indirirken gözükmez.
en son da en üst soldaki "send" butonuna tıklıyoruz.
Ve dosyamız gönderilmeye başlanıyor...
Bu programın alt tarafında yazdığı gibi istediğimiz yerde "pause" ile durdurabilir, "resume" ile devam ettirebiliriz.
Şimdi gelelim başlangıçta bahsettiğimiz hızımızı sınırlamaya:
sağ üstten "options" a giriyoruz, menü açılacaktır. buradan "tarnsfer " i seçiyoruz.
burada burada ki "sending" hemen altındaki satırın başına "tik" işaretini koyuyoruz. sonra satırn sonunda ilk olarak "40" KB/s yazıyor. buraya istediğimiz değeri giriyoruz. Unutmayın 256 kbps hızındaki bağlantımızın upload hızı 6 KB/s dir, 512 kbps hızındaki bağlantının upload hızı 12 KB/s dir, bu değerlerden büyük olsa dahi gönderme hzınız değişmez. Bu değerlerden küçük yaparsanız upload sırasında internet sörf hızınız da rahatla olacaktır.
DOWNLOAD PANDO
Kalıcı Bağlantı Yorum (yok) Yorum yaz!