Skip to content

Commit 6364705

Browse files
authored
Hebrew translation (#10)
1 parent 383568e commit 6364705

2 files changed

Lines changed: 282 additions & 19 deletions

File tree

1/he/6.html

Lines changed: 263 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,263 @@
1+
<html>
2+
<head>
3+
<title>tmp.0ut</title>
4+
<meta charset="utf-8">
5+
<style>
6+
body {
7+
color: #FEFEFE;
8+
background-color: #0c0d10;
9+
margin: 0 auto;
10+
padding: 1em 0 1em 0;
11+
}
12+
13+
@font-face { font-family: "gohu"; src: url("gohu.woff") format('woff'); }
14+
@font-face { font-family: "FreeMono"; src: url("FreeMono.woff") format('woff'); }
15+
16+
pre { font-size: 14px; line-height: 1.0; }
17+
18+
.ltr {
19+
direction: ltr;
20+
text-align: left;
21+
font-family: "gohu", "Lucida Console", monospace, Monaco;
22+
}
23+
24+
.rtl {
25+
direction: rtl;
26+
text-align: right;
27+
font-family: "FreeMono", "Lucida Console", monospace, Monaco;
28+
}
29+
30+
a { color: #93ffd7; text-decoration: none;}
31+
</style>
32+
</head>
33+
<body>
34+
<center>
35+
<div style="display: inline-block;"><pre class="rtl">
36+
┐───────────────────────┌
37+
│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄
38+
│ █ █ █ █ █ █ │
39+
│ ▀▀▀▀█ █ █ █ █ │
40+
│ ▄ █ █ █ █ │
41+
│ ▄▄▄▄▄ │
42+
│ █ █ │
43+
│ █ █ │
44+
│ █▄▄▄█ │
45+
│ ▄ ▄ │
46+
│ █ █ │
47+
│ █ █ │
48+
│ █▄▄▄█ │
49+
│ ▄▄▄▄▄ │
50+
│ █ │
51+
דיסאסמבלי-שגוי פולימורפית │ █ │
52+
~ S01den ┘───█───────────────────└
53+
54+
נכתב באהבה ע"י S01den, מהצוות של tmp.out !
55+
mail: S01den@protonmail.com
56+
57+
[ תורגם ע"י Lit3r4lly ]
58+
59+
--- הקדמה ---
60+
61+
כשכתבתי את [0]<span dir="ltr">Lin32.Bakunin</span>, תהיתי לעצמי איך לעשות את זה יותר מעניין
62+
מסתם וירוס שכתוב ב-MIPS ומדפיס קצת שטויות. אני פשוט רציתי לעצבן רברסרים.
63+
ואז נזכרתי בטכניקת ה-False-Disassembly שמימשתי בחלק מה-crackme's שלי.
64+
65+
בגלל שפולימורפיזם זה מגניב, רציתי להבין אם זה אפשרי ליצור משהו מעניין בעזרת ערבוב של זה יחד עם
66+
טכניקת ה-False-Disassembly.
67+
68+
התשובה היא כן, וקראתי לשיטה הזו (אני לא יודע אם זו טכניקה מקורית שלי או לא), שיטת
69+
ה-"דיסאסמבלי-שגוי פולימורפית" או בפשטות "פולימורפיזם מזוייף".
70+
71+
--- איך False-Disassembly עובד? ---
72+
73+
הטכניקה הזו היא די פשוטה להבנה ולמימוש, ואני גיליתי עליה במסמך המפורסם של [1]<span dir="rtl">Silvio Cesare</span> על
74+
טכניקות anti-debugging ורברסינג בלינוקס.
75+
פשוט צריך לשים כמה בייטים רנדומליים שבד"כ מייצגים התחלה של הוראה מסויימת (Opcode) לפני קטע הקוד,
76+
כמו בדוגמה הבאה:
77+
78+
<pre class="ltr">
79+
-------------------- נחתך-כאן --------------------
80+
hey: hey:
81+
xor %rbx, %rbx .ascii "\x48\x31"
82+
jmp yo ====&gt; xor %rbx, %rbx
83+
jmp yo
84+
---------------------------------------------------</pre>
85+
<pre class="rtl">
86+
עכשיו, אם נסתכל על שני קטעי הקוד שעברו disassemble, אנחנו נקבל משהו כזה (radare2 מה לעזעזאל?):</pre>
87+
<pre class="ltr">
88+
-------------------- נחתך-כאן --------------------
89+
;-- hey:
90+
0x00401002 4831db xor rbx, rbx
91+
0x00401005 eb02 jmp 0x401009
92+
93+
||
94+
\/
95+
;-- hey:
96+
0x00401002 48314831 xor qword [rax + 0x31], rcx
97+
0x00401006 dbeb fucomi st(3)
98+
0x00401008 026631 add ah, byte [rsi + 0x31]
99+
100+
---------------------------------------------------</pre>
101+
<pre class="rtl">
102+
מדוע הדיסאסמבלר מתנהג בצורה הזו?
103+
104+
ובכן, <span dir="ltr">\x48\x31</span> הם בד"כ ייצוג של ההתחלה של הוראת [2]<span dir="rtl">xor</span>, והבייטים שבאים לאחר מכן מייצגים לרוב את
105+
האוגרים שאיתם האופרציה עובדת.
106+
107+
אז למעשה הבייטים ה"מאתחלים" הללו שהוספנו נדבקים לבייטים העוקבים, שהם למעשה בעצמם בייטים "מאתחלים", וכך
108+
הדיסאסמבלר מפרש את אותם בייטים מאתחלים באמת, כבייטים המייצגים את הרגיסטרים ובגלל זה מופיע לנו זבל במקום ההוראות הרצויות.
109+
110+
לכן, כדי שנוכל להריץ קוד שבנוי בצורה שכזו, אנחנו חייבים לקפוץ מעל הבייטים שהוספנו.
111+
זה אמור להיות משהו כזה:
112+
</pre>
113+
<pre class="ltr">
114+
-------------------- נחתך-כאן --------------------
115+
_start:
116+
jmp hey+2
117+
118+
hey:
119+
.ascii "\x48\x31"
120+
xor %rbx, %rbx
121+
jmp yo
122+
---------------------------------------------------
123+
</pre>
124+
<pre class="rtl">
125+
--- הקוד המלא ---
126+
127+
עכשיו, דמיינו שאתם יכולים רנדומלית לשנות את כל הבייטים הללו שמייצרים את ה-false-disassembly בכל
128+
אופרציה, וכך גם הקוד שעבר disassembly ישתנה גם ולכן הרברסר
129+
שיחקור את הקוד, יחשוב שהוא פולימורפי בזמן שרק מספר בייטים בודדים שונו.
130+
131+
וכעת, ללא דיחוי נוסף, הקוד המלא.
132+
</pre>
133+
<pre class="ltr">
134+
----------- נחתך כאן -----------
135+
# build cmd: as Linux.FakePolymorphism.asm -o fakePoly.o ; ld fakePoly.o -o fakePoly
136+
137+
# this code is a fake polymorphic example, feel free to try/use/whatever it!
138+
# It grabs itself its code, modify the fake-disassembly bytes and put the result
139+
# on the stack.
140+
141+
.text
142+
.global _start
143+
144+
_start:
145+
jmp true_start+2 # jump over the fake-disassembly bytes
146+
147+
true_start:
148+
.ascii "\x48\x31" # fake-disassembly bytes
149+
xor %rbx, %rbx
150+
jmp get_code+2 # jump over the fake-disassembly bytes
151+
152+
get_code:
153+
.ascii "\x66\x31" # fake-disassembly bytes
154+
call get_rip
155+
sub $0x10 ,%rax # 0x10 is the number of bytes between _start abd this instruction
156+
movb (%rax,%rbx), %al
157+
movb %al, (%rsp,%rbx)
158+
inc %rbx
159+
cmp $0x54, %rbx # 0x54 is the total size of this code
160+
jne get_code+2
161+
162+
# Pseudo RNG thanks to the time stamp counter
163+
rdtsc
164+
xor $0xdead, %rax
165+
mov %ax, 2(%rsp)
166+
xor $0xbeef, %rdx
167+
mov %ax, 9(%rsp)
168+
169+
mov $60, %rax
170+
mov $0, %rdi
171+
syscall # sys_exit
172+
173+
get_rip:
174+
mov (%rsp), %rax
175+
ret
176+
----------------------------</pre>
177+
<pre class="rtl">
178+
--- סיכום ---
179+
180+
אני מקווה שנהנתם מהמאמר הזה ושתנסו לממש את הטכניקה הזו בוירוסים והcrackme's שלכם!
181+
182+
ביחד עם sblip, כתבנו וירוס פולימורפי (Lin64.Eng3ls, תעיפו מבט על המאמר והקוד !) שמשתמש בטכניקה
183+
הזו בשביל לערפל את הקוד של המפענח של עצמו.
184+
185+
הקוד של המפענח:
186+
</pre>
187+
<pre class="ltr">
188+
------- נחתך-כאן -------
189+
pop rcx
190+
jmp jmp_over+2
191+
jmp_over:
192+
db `\x48\x31` ; false disassembly
193+
mov al,0x00
194+
xor rdx, rdx
195+
196+
decoder:
197+
jmp jmp_over2+2
198+
199+
jmp_over2:
200+
db `\xb8\xd9` ; false disassembly
201+
mov dl, byte [r12+rdi]
202+
cmp rdi, STUB_SIZE-1
203+
jna no_decrypt
204+
205+
jmp jmp_over3+2
206+
jmp_over3:
207+
db `\x48\x81` ; false disassembly
208+
xor dl, al
209+
210+
no_decrypt:
211+
mov byte [rbx+rdi], dl
212+
inc rdi
213+
loop decoder
214+
-------------------------</pre>
215+
<pre class="rtl">
216+
והנה מספר מפענחים שהבאתי מבינארים זדוניים שונים שעברו [3]<span dir="rtl">disassemble</span>, בוא נראה את הטריק בפעולה:</pre>
217+
<pre class="ltr">
218+
1.
219+
0x0c003f46 59 pop rcx
220+
0x0c003f47 eb02 jmp 0xc003f4b
221+
0x0c003f49 00d6 add dh, dl
222+
0x0c003f4b b06d mov al, 0x6d
223+
0x0c003f4d 4831d2 xor rdx, rdx
224+
0x0c003f50 eb02 jmp 0xc003f54
225+
0x0c003f52 1aca sbb cl, dl
226+
0x0c003f54 418a143c mov dl, byte [r12 + rdi]
227+
0x0c003f58 4881ff870000. cmp rdi, 0x87
228+
0x0c003f5f 7606 jbe 0xc003f67
229+
0x0c003f61 eb02 jmp 0xc003f65
230+
0x0c003f63 c0d630 rcl dh, 0x30
231+
0x0c003f66 c28814 ret 0x1488
232+
0x0c003f69 3b48ff cmp ecx, dword [rax - 1]
233+
0x0c003f6c c7 invalid
234+
0x0c003f6d e2e1 loop 0xc003f50
235+
236+
2.
237+
0x0c003fe6 59 pop rcx
238+
0x0c003fe7 eb02 jmp 0xc003feb
239+
0x0c003fe9 ce invalid
240+
0x0c003fea 0ab0a34831d2 or dh, byte [rax - 0x2dceb75d]
241+
0x0c003ff0 eb02 jmp 0xc003ff4
242+
0x0c003ff2 39cb cmp ebx, ecx
243+
0x0c003ff4 418a143c mov dl, byte [r12 + rdi]
244+
0x0c003ff8 4881ff870000. cmp rdi, 0x87
245+
0x0c003fff 7606 jbe 0xc004007
246+
0x0c004003 0e invalid
247+
0x0c004004 0a30 or dh, byte [rax]
248+
0x0c004006 c28814 ret 0x1488
249+
0x0c004009 3b48ff cmp ecx, dword [rax - 1]
250+
0x0c00400c c7 invalid
251+
0x0c00400d e2e1 loop 0xc003ff0</pre>
252+
<pre class="rtl">
253+
התוצאות שונות מאוד מהקוד המקורי.
254+
255+
--- הערות ורפרנסים ---</pre>
256+
<pre class="ltr">
257+
[0] https://vx-underground.org/papers/VXUG
258+
/Exclusive/Bakounin/Writing_virus_in_MIPS_assembly_for_fun.txt
259+
[1] http://www.ouah.org/linux-anti-debugging.txt // Silvio המסמך של
260+
[2] https://www.felixcloutier.com/x86/xor
261+
[3] radare2 עם
262+
</pre>
263+
</div></center></body></html>

1/he/index.html

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,27 @@
3333
│ █▄▄▄█ │
3434
│ ▄▄▄▄▄ │
3535
┐───────────────────────────────────────────────────────────│ █ │
36-
│ tmp.0ut גיליון 1 - אפריל 2021 │ █ │
36+
│ tmp.0ut גיליון 1 - אפריל 2021 │ █ │
3737
│ תוכן ┘── █───────────────────└
3838
│ │
39-
│ 1.0 <a href="0.html">הקדמה</a> &rlm;........................................................&rlm; צוות tmp.0ut │
40-
│ 1.1 <a href="1.html">בייטים מתים</a> &rlm;................................................... xcellerator │
41-
│ 1.2 <a href="2.html">מימוש שיטת הדבקה דרך PT_NOTE ב-x64 assembly</a> &rlm;.........................&rlm; sblip │
42-
│ 1.3 מזריק ELF בטכניקת PT_NOTE ל-PT_LOAD, ב-Rust &rlm;.........................&rlm; d3npa │
43-
│ 1.4 PT_NOTE Disinfector ב-Python &rlm;.....................................&rlm; manizzle │
44-
│ 1.5 פאזינג ל-Radare2 בשביל חולשות בכ-30 שורות קוד &rlm;...........&rlm; Architect, s01den │
45-
│ 1.6 The Polymorphic False-Disassembly Technique &rlm;........................&rlm; s01den │
46-
│ 1.7 Lin64.Eng3ls: טכניקות אנטי-RE בוירוס לינוקסי &rlm;................&rlm; s01den, sblip │
47-
│ 1.8 Linux.Midrashim.asm &rlm;...................................................&rlm; TMZ │
48-
│ 1.9 טעינת LKM בזיכרון &rlm;...............................................&rlm; netspooky │
49-
│ 1.10 Linux SHELF Loading &rlm;....................................&rlm; ulexec, Anonymous_ │
50-
│ 1.11 חזרה לנקודת הכניסה המקורית למרות PIE &rlm;...............................&rlm; s01den │
51-
│ 1.12 כתיבת וירוסים ב-MIPS Assembly לכיף (ובלי Profit) ...................&rlm; s01den │
52-
│ 1.13 ראיון: herm1t &rlm;...............................................&rlm; tmp.0ut Staff │
53-
│ 1.14 Linux/Retaliation - נעלם ב-360 שניות &rlm;...............................&rlm; qkumba │
54-
│ 1.15 Linux.Nasty.asm &rlm;.......................................................&rlm; TMZ │
55-
│ 1.16 Linux.Precinct3.asm &rlm;.............................................&rlm; netspooky │
56-
│ 1.17 עולמות Underground &rlm;.................................................&rlm; s01den │
39+
│ 1.0 <a href="0.html">הקדמה</a> ........................................................ צוות tmp.0ut │
40+
│ 1.1 <a href="1.html">בייטים מתים</a> ................................................... xcellerator │
41+
│ 1.2 Implementing the PT_NOTE Infection Method In x64 Assembly ........... sblip │
42+
│ 1.3 PT_NOTE To PT_LOAD ELF Injector In Rust ............................. d3npa │
43+
│ 1.4 PT_NOTE Disinfector In Python .................................... manizzle │
44+
│ 1.5 Fuzzing Radare2 For 0days In About 30 Lines Of Code ..... Architect, s01den │
45+
│ 1.6 <a href="6.html">דיסאסמבלי-שגוי פולימורפית</a> .......................................... s01den │
46+
│ 1.7 Lin64.Eng3ls: Some Anti-RE Techniques In A Linux Virus ...... s01den, sblip │
47+
│ 1.8 Linux.Midrashim.asm ................................................... TMZ │
48+
│ 1.9 In-Memory LKM Loading ........................................... netspooky │
49+
│ 1.10 Linux SHELF Loading .................................... ulexec, Anonymous_ │
50+
│ 1.11 Return To Original Entry Point Despite PIE ......................... s01den │
51+
│ 1.12 Writing Viruses In MIPS Assembly For Fun (And No Profit) ........... s01den │
52+
│ 1.13 ראיון: herm1t ............................................... tmp.0ut Staff │
53+
│ 1.14 GONE IN 360 SECONDS - Linux/Retaliation ............................ qkumba │
54+
│ 1.15 Linux.Nasty.asm ....................................................... TMZ │
55+
│ 1.16 Linux.Precinct3.asm ............................................. netspooky │
56+
│ 1.17 Underground Worlds ................................................. s01den │
5757
│ │
5858
┘──────────────────────────────────────────────────────────────────────────────────└
5959

0 commit comments

Comments
 (0)