forked from wangyif2/RE-for-beginners
-
Notifications
You must be signed in to change notification settings - Fork 5
/
tools_ITA.tex
211 lines (144 loc) · 7.74 KB
/
tools_ITA.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
\chapter{Strumenti}
\epigraph{Ora che Dennis Yurichev ha reso questo libro free (libre), è un
contributo a tutto il mondo della libera informazione ed educazione.
Comunque, per il bene della nostra libertà, abbiamo bisogno di strumenti free (libre) per il reverse
engineering in modo da rimpiazzare quelli proprietari descritti in questo libro.}{Richard M. Stallman}
\mysection{Analisi di Binari}
Strumenti da utilizzare senza eseguire nessun processo:
\myindex{Hiew}
\myindex{UNIX!strings}
\myindex{UNIX!xxd}
\myindex{UNIX!od}
\begin{itemize}
\item
(Free, open-source) \IT{ent}\footnote{\url{http://www.fourmilab.ch/random/}}: strumento per analizzare l'entropia.
Leggi di più riguardo l'entropia: \myref{entropy}.
\item
\label{Hiew}
\IT{Hiew}\footnote{\href{http://go.yurichev.com/17035}{hiew.ru}}:
per piccole modifiche del codice dei file binari.
\item (Free, open-source) \IT{xxd} and \IT{od}: standard UNIX utility per effettuare il dump nel formato desiderato.
\item (Free, open-source) \IT{strings}: strumento *NIX per cercare stringhe ASCII all'interno di file binari, eseguibili compresi.
Sysinternals ha un'alternativa\footnote{\url{https://technet.microsoft.com/en-us/sysinternals/strings}}
che supporta la stringhe con caratteri di tipo "wide" (UTF-16, ampiamente utilizzati in Windows).
\item (Free, open-source) \IT{Binwalk}\footnote{\url{http://binwalk.org/}}: analisi di immagini firmware.
\item
\myindex{binary grep}
(Free, open-source) \IT{binary grep}:
piccola utility per cercare una sequenza di byte in molti file,
incluso file non eseguibili: \BGREPURL.
% TBT
\end{itemize}
\subsection{Disassemblers}
\myindex{IDA}
\myindex{Binary Ninja}
\myindex{BinNavi}
\myindex{objdump}
\begin{itemize}
\item \IT{IDA}. Una versione più vecchia è liberamente disponibile per lo scaricamento
\footnote{\href{http://go.yurichev.com/17031}{hex-rays.com/products/ida/support/download\_freeware.shtml}}.
\ShortHotKeyCheatsheet: \myref{sec:IDA_cheatsheet}
\item \IT{Binary Ninja}\footnote{\url{http://binary.ninja/}}
\item (Free, open-source) \IT{zynamics BinNavi}\footnote{\url{https://www.zynamics.com/binnavi.html}}
\item (Free, open-source) \IT{objdump}: semplice utility command-line per effettuare il dump e il disassembling.
\item (Free, open-ssource) \IT{readelf}\footnote{\url{https://sourceware.org/binutils/docs/binutils/readelf.html}}:
dump delle informazioni dei file ELF.
\end{itemize}
\subsection{Decompilers}
C'è solo un decompiler conosciuto, pubblicamente disponibile e di elevata qualità per decompilare in C: \IT{Hex-Rays}:
\href{http://go.yurichev.com/17033}{hex-rays.com/products/decompiler/}
% TBT
\subsection{Comparazione Patch/diffing}
Potresti voler utilizzare questi strumenti quando devi comparare la versione originale di un eseguibile con quella patchata,
in modo da trovare cos'è stato patchato e perchè.
\begin{itemize}
\item (Free) \IT{zynamics BinDiff}\footnote{\url{https://www.zynamics.com/software.html}}
\item (Free, open-source) \IT{Diaphora}\footnote{\url{https://github.com/joxeankoret/diaphora}}
\end{itemize}
\mysection{Live analysis}
Strumenti da utilizzare per effettuare un'analisi live del sistema o di un processo in esecuzione.
\subsection{Debuggers}
\myindex{\olly}
\myindex{Radare}
\myindex{GDB}
\myindex{tracer}
\myindex{LLDB}
\myindex{WinDbg}
\begin{itemize}
\item (Free) \IT{OllyDbg}.
Popolare win32 debugger\footnote{\href{http://go.yurichev.com/17032}{ollydbg.de}}.
\ShortHotKeyCheatsheet: \myref{sec:Olly_cheatsheet}
\item (Free, open-source) \IT{GDB}.
Strumento non molto popolare tra reverse engineers perchè è per lo più inteso per programmatori.
Alcuni comandi: \myref{sec:GDB_cheatsheet}.
C'è anche un'interfaccia per GDB, ``GDB dashboard''\footnote{\url{https://github.com/cyrus-and/gdb-dashboard}}.
\item (Free, open-source) \IT{LLDB}\footnote{\url{http://lldb.llvm.org/}}.
\item \IT{WinDbg}\footnote{\url{https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit}}:
kernel debugger per Windows.
\item (Free, open-source) \IT{Radare} \ac{AKA} rada.re \ac{AKA} r2\footnote{\url{http://rada.re/r/}}.
Esiste anche una GUI: \IT{ragui}\footnote{\url{http://radare.org/ragui/}}.
\item (Free, open-source) \IT{tracer}.
\label{tracer}
L'autore usa spesso \IT{tracer}
\footnote{\href{http://go.yurichev.com/17338}{yurichev.com}}
invece di un debugger.
L'autore di queste righe ha smesso di utilizzare un debugger dato che l'unica cosa di cui aveva bisogno era di trovare gli
argomenti delle funzioni durante l'esecuzione o lo stato dei registri ad un determinato punto.
Caricare un debugger ogni volta risultava essere non ottimale, perciò è nacque una nuova utility chiamata \IT{tracer}.
Funziona dalla linea di comando e permette di intercettare l'esecuzione di funzioni,
impostare breakpoint in posizioni arbitrarie, leggere e modificare lo stato dei registri, ecc.
N.B.: \IT{tracer} non sta evolvendo perchè è nato principalmente come strumento di dimostrazione per questo libro, non come strumento di ogni giorno.
\end{itemize}
\subsection{Tracciare chiamate alle librerie}
\IT{ltrace}\footnote{\url{http://www.ltrace.org/}}.
\subsection{Tracciare chiamate di sistema}
\label{strace}
\myindex{strace}
\myindex{dtruss}
\subsubsection{strace / dtruss}
\myindex{syscall}
Mostra quali chiamate di sistema sono chiamate da un processo. (syscalls(\myref{syscalls}))
Per esempio:
\begin{lstlisting}
# strace df -h
...
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\232\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1770984, ...}) = 0
mmap2(NULL, 1780508, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb75b3000
\end{lstlisting}
\myindex{\MacOSX}
\MacOSX ha dtruss per lo stesso compito.
\myindex{Cygwin}
Cygwin ha strace ma, per quanto ne so, funziona solo per file .exe compilati all'interno dell'ambiente
cygwin.
\subsection{Network sniffing}
\IT{Sniffing} significa intercettare informazioni di cui si potrebbe essere interessati.
(Free, open-source) \IT{Wireshark}\footnote{\url{https://www.wireshark.org/}} per lo sniffing di rete.
Puà sniffare anche USB\footnote{\url{https://wiki.wireshark.org/CaptureSetup/USB}}.
Wireshark ha un fratello chiamato \IT{tcpdump}\footnote{\url{http://www.tcpdump.org/}}, un semplice strumento a linea di comando.
\subsection{Sysinternals}
\myindex{Sysinternals}
(Free) Sysinternals (developed by Mark Russinovich)
\footnote{\url{https://technet.microsoft.com/en-us/sysinternals/bb842062}}.
Questi strumenti sono importanti e vale la pena studiarli: Process Explorer, Handle, VMMap, TCPView, Process Monitor.
\subsection{Valgrind}
(Free, open-source) strumento per rilevare memory leak: \url{http://valgrind.org/}.
A causa del suo potente meccanismo \ac{JIT}, Valgrind è utilizzato come framework per altri strumenti.
% TODO network fuzzing
\subsection{Emulatori}
\begin{itemize}
\item (Free, open-source) \IT{QEMU}\footnote{\url{http://qemu.org}}: emulatore per differenti tipi di CPU e architetture.
\item (Free, open-source) \IT{DosBox}\footnote{\url{https://www.dosbox.com/}}: emulatore MS-DOS, usato soprattutto per il retro-gaming.
\item (Free, open-source) \IT{SimH}\footnote{\url{http://simh.trailing-edge.com/}}: emulatore di antichi computer, mainframe, ecc.
\end{itemize}
\mysection{Altri strumenti}
\IT{Microsoft Visual Studio Express}
\footnote{\href{http://go.yurichev.com/17034}{visualstudio.com/en-US/products/visual-studio-express-vs}}:
Versione gratuita di Visual Studio, conveniente per semplici esperimenti.
Alcune opzioni utili: \myref{sec:MSVC_options}.
% TBT
\mysection{Manca qualcosa qui?}
Se conosci qualche strumento non elencato qui, per favore segnalamelo tramite e-mail al seguente indirizzo:\\
\TT{\EMAIL}.