.. | ||
angr | ||
blobrunner.md | ||
cheat-engine.md | ||
README.md | ||
satisfiability-modulo-theories-smt-z3.md |
Vyombo vya Kugeuza & Mbinu za Msingi
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA USAJILI!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Kikundi cha Usalama cha Try Hard
{% embed url="https://discord.gg/tryhardsecurity" %}
Vyombo vya Kugeuza vilivyotegemea ImGui
Programu:
- ReverseKit: https://github.com/zer0condition/ReverseKit
Msanidi wa Wasm / Msanidi wa Wat
Mtandaoni:
- Tumia https://webassembly.github.io/wabt/demo/wasm2wat/index.html kwa kugeuza kutoka kwa wasm (binary) hadi wat (maandishi wazi)
- Tumia https://webassembly.github.io/wabt/demo/wat2wasm/ kwa kuunda kutoka kwa wat hadi wasm
- unaweza pia kujaribu kutumia https://wwwg.github.io/web-wasmdec/ kwa kugeuza
Programu:
Msanidi wa .NET
dotPeek
dotPeek ni msanidi wa kugeuza ambao hugeuza na kuchunguza muundo mbalimbali, ikiwa ni pamoja na maktaba (.dll), faili za metadata za Windows (.winmd), na programu za kutekelezwa (.exe). Mara baada ya kugeuzwa, mkusanyiko unaweza kuokolewa kama mradi wa Visual Studio (.csproj).
Faida hapa ni kwamba ikiwa msimbo wa chanzo uliopotea unahitaji kurejeshwa kutoka kwa mkusanyiko wa zamani, hatua hii inaweza kuokoa muda. Zaidi, dotPeek hutoa urambazaji wa manufaa kote kwenye msimbo uliogeuzwa, ikifanya kuwa moja ya zana kamili kwa uchambuzi wa algorithm za Xamarin.
.NET Reflector
Kwa mfano wa kuongeza wa kina na API inayozidisha zana ili kufaa mahitaji yako halisi, .NET reflector hupunguza muda na kusahilisha maendeleo. Hebu tuangalie huduma nyingi za uhandisi wa nyuma ambazo zana hii hutoa:
- Hutoa ufahamu jinsi data inavyopita kupitia maktaba au sehemu
- Hutoa ufahamu wa utekelezaji na matumizi ya lugha na fremu za .NET
- Hupata utendaji usioelezwa na usiofunuliwa ili kupata zaidi kutoka kwa APIs na teknolojia zilizotumiwa.
- Hupata tegemezi na makusanyo tofauti
- Inagundua mahali sahihi ya makosa katika msimbo wako, vipengele vya tatu, na maktaba.
- Hufanya uchunguzi wa kina wa chanzo cha msimbo wote wa .NET unaoendelea.
ILSpy & dnSpy
ILSpy programu-jalizi kwa Visual Studio Code: Unaweza kuwa nayo kwenye OS yoyote (unaweza kuisakinisha moja kwa moja kutoka VSCode, hakuna haja ya kupakua git. Bonyeza Extensions na tafuta ILSpy).
Ikiwa unahitaji kugeuza, kurekebisha na kuunda tena unaweza kutumia dnSpy au tawi linalotunzwa kikamilifu la hiyo, dnSpyEx. (Bonyeza Kulia -> Badilisha Mbinu kubadilisha kitu ndani ya kazi).
Uchakataji wa DNSpy
Ili kufanya DNSpy iwekeze baadhi ya habari kwenye faili, unaweza kutumia kificho hiki:
using System.IO;
path = "C:\\inetpub\\temp\\MyTest2.txt";
File.AppendAllText(path, "Password: " + password + "\n");
Kurekebisha DNSpy
Ili kurekebisha namna ya kufanya kazi ya kificho kwa kutumia DNSpy unahitaji:
Kwanza, badilisha Vipengele vya Utoaji vinavyohusiana na urekebishaji:
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
Kwa:
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default |
DebuggableAttribute.DebuggingModes.DisableOptimizations |
DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints |
DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
Na bonyeza compile:
Kisha hifadhi faili mpya kupitia File >> Save module...:
Hii ni muhimu kwa sababu ikiwa hutafanya hivyo, wakati wa runtime maboresho kadhaa yatafanywa kwenye nambari na inaweza kuwa kwamba wakati wa kutatua hitilafu break-point is never hit au baadhi ya variables hazipo.
Kisha, ikiwa programu yako ya .NET inaendeshwa na IIS unaweza kurestart kwa:
iisreset /noforce
Kisha, ili kuanza kurekebisha hitilafu unapaswa kufunga faili zote zilizofunguliwa na ndani ya Tab ya Kurekebisha chagua Ambatanisha kwa Mchakato...:
Kisha chagua w3wp.exe kuambatisha kwenye seva ya IIS na bonyeza ambatanisha:
Sasa tukiwa tunarekebisha mchakato, ni wakati wa kuusimamisha na kupakia moduli zote. Kwanza bonyeza Kurekebisha >> Simamisha Yote kisha bonyeza Kurekebisha >> Windows >> Moduli:
Bonyeza moduli yoyote kwenye Moduli na chagua Fungua Moduli Zote:
Bonyeza kulia moduli yoyote kwenye Mtafuta wa Mkusanyiko na bonyeza Panga Mkusanyiko:
Java decompiler
https://github.com/skylot/jadx
https://github.com/java-decompiler/jd-gui/releases
Kurekebisha DLLs
Kutumia IDA
- Pakia rundll32 (64bits katika C:\Windows\System32\rundll32.exe na 32 bits katika C:\Windows\SysWOW64\rundll32.exe)
- Chagua kurekebisha Windbg
- Chagua "Sitishe wakati wa kupakia/kusitisha maktaba"
- Sanidi parameta za utekelezaji ukiweka njia ya DLL na kazi unayotaka kuita:
Kisha, unapoanza kurekebisha utekelezaji utasimamishwa kila DLL inapopakiwa, kisha, wakati rundll32 inapopakia DLL yako utekelezaji utasimamishwa.
Lakini, unawezaje kufikia nambari ya DLL iliyopakiwa? Kutumia njia hii, sijui jinsi.
Kutumia x64dbg/x32dbg
- Pakia rundll32 (64bits katika C:\Windows\System32\rundll32.exe na 32 bits katika C:\Windows\SysWOW64\rundll32.exe)
- Badilisha Mstari wa Amri ( Faili --> Badilisha Mstari wa Amri ) na weka njia ya dll na kazi unayotaka kuita, kwa mfano: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\14.ridii_2.dll",DLLMain
- Badilisha Chaguo --> Vipimo na chagua "Kuingia kwa DLL".
- Kisha anzisha utekelezaji, kurekebisha itasimama kwa kila dll kuu, kwa wakati fulani utasimama kwenye kuingia kwa dll yako. Kutoka hapo, tafuta tu sehemu ambapo unataka kuweka kiungo cha kusitisha.
Tambua kwamba unapokuwa umesimamishwa kwa sababu yoyote katika win64dbg unaweza kuona katika nambari unapotazama juu ya dirisha la win64dbg:
Kisha, ukitazama hii unaweza kuona wakati utekelezaji uliposimamishwa kwenye dll unayotaka kurekebisha.
Programu za GUI / Michezo ya Video
Cheat Engine ni programu muhimu ya kutafuta mahali ambapo thamani muhimu zimehifadhiwa ndani ya kumbukumbu ya mchezo unaoendeshwa na kuzibadilisha. Taarifa zaidi katika:
{% content-ref url="cheat-engine.md" %} cheat-engine.md {% endcontent-ref %}
PiNCE ni zana ya mbele/urekebishaji wa nyuma kwa GNU Project Debugger (GDB), iliyolenga michezo. Walakini, inaweza kutumika kwa chochote kinachohusiana na urekebishaji wa nyuma
Decompiler Explorer ni mbele ya wavuti kwa idadi ya wadecompile. Huduma hii ya wavuti inakuwezesha kulinganisha matokeo ya wadecompile tofauti kwenye programu ndogo za kutekelezwa.
ARM & MIPS
{% embed url="https://github.com/nongiach/arm_now" %}
Shellcodes
Kurekebisha shellcode na blobrunner
Blobrunner ita tenga shellcode ndani ya nafasi ya kumbukumbu, itaku onyesha anwani ya kumbukumbu ambapo shellcode ilipangiwa na itasimamisha utekelezaji.
Kisha, unahitaji kuambatanisha kurekebisha (Ida au x64dbg) kwa mchakato na weka kiungo cha kusitisha kwenye anwani iliyotajwa ya kumbukumbu na endelea utekelezaji. Kwa njia hii utakuwa unarekebisha shellcode.
Ukurasa wa kutolewa wa github una zip zinazo zawiri kutolewa kwa kuchapishwa: https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5
Unaweza kupata toleo lililobadilishwa kidogo la Blobrunner kwenye kiungo kifuatacho. Ili kukusanya tu unda mradi wa C/C++ katika Visual Studio Code, nakili na ubandike nambari na ujenge.
{% content-ref url="blobrunner.md" %} blobrunner.md {% endcontent-ref %}
Kurekebisha shellcode na jmp2it
jmp2it ni sawa sana na blobrunner. Ita tenga shellcode ndani ya nafasi ya kumbukumbu, na anza mzunguko wa milele. Kisha unahitaji kuambatanisha kurekebisha kwa mchakato, cheza anza subiri sekunde 2-5 na bonyeza kusimamisha na utajikuta ndani ya mzunguko wa milele. Ruka kwenye maagizo ijayo ya mzunguko wa milele kwani itakuwa wito kwa shellcode, na mwishowe utajikuta unatekeleza shellcode.
Unaweza kupakua toleo lililokusanywa la jmp2it kwenye ukurasa wa kutolewa.
Kurekebisha shellcode kwa kutumia Cutter
Cutter ni GUI ya radare. Kutumia cutter unaweza kuiga shellcode na kuichunguza kwa njia ya kudumu.
Tambua kwamba Cutter inakuruhusu "Fungua Faili" na "Fungua Shellcode". Kwa upande wangu nilipoifungua shellcode kama faili ilidecompile vizuri, lakini nilipoifungua kama shellcode haikufanya hivyo:
Ili kuanza uigaji mahali unapotaka, weka bp hapo na kwa kweli cutter itaanza moja kwa moja uigaji kutoka hapo:
Unaweza kuona stak kwa mfano ndani ya kumbukumbu ya hex:
Kufuta shellcode na kupata kazi zilizotekelezwa
Unapaswa kujaribu scdbg.
Itakwambia mambo kama ni kazi zipi shellcode inatumia na ikiwa shellcode inajichimba yenyewe kwenye kumbukumbu.
scdbg.exe -f shellcode # Get info
scdbg.exe -f shellcode -r #show analysis report at end of run
scdbg.exe -f shellcode -i -r #enable interactive hooks (file and network) and show analysis report at end of run
scdbg.exe -f shellcode -d #Dump decoded shellcode
scdbg.exe -f shellcode /findsc #Find offset where starts
scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset
scDbg pia ina launcher ya kielelezo ambapo unaweza kuchagua chaguo unazotaka na kutekeleza shellcode
Chaguo la Unda Dump litadump shellcode ya mwisho ikiwa kuna mabadiliko yoyote yanayofanywa kwa shellcode kwa njia ya kumbukumbu (inayoweza kupakuliwa shellcode iliyofanywa). Kianzio cha kuanza kinaweza kuwa na manufaa kuanza shellcode kwenye kianzio maalum. Chaguo la Kianzio cha Kufuatilia ni muhimu kufuatilia shellcode kwa kutumia terminal ya scDbg (hata hivyo, ninaona chaguo lolote lililoelezwa hapo awali ni bora kwa suala hili kwani utaweza kutumia Ida au x64dbg).
Kufasiri kwa Kutumia CyberChef
Pakia faili yako ya shellcode kama kuingiza na tumia mapishi yafuatayo kudecompile: https://gchq.github.io/CyberChef/#recipe=To_Hex('Space',0)Disassemble_x86('32','Full%20x86%20architecture',16,0,true,true)
Movfuscator
Obfuscator huyu hubadilisha maagizo yote kwa mov
(ndio, kweli ni nzuri sana). Pia hutumia kuvuruga kubadilisha mifumo ya utekelezaji. Kwa maelezo zaidi kuhusu jinsi inavyofanya kazi:
- https://www.youtube.com/watch?v=2VF_wPkiBJY
- https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas_2015_the_movfuscator.pdf
Ikiwa una bahati demovfuscator itaondoa ufusaji wa binary. Ina tegemezi kadhaa
apt-get install libcapstone-dev
apt-get install libz3-dev
Na sakinisha keystone (apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install
)
Ikiwa unacheza CTF, njia hii ya kupata bendera inaweza kuwa muhimu sana: https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html
Rust
Ili kupata sehemu ya kuingia tafuta kazi kwa ::main
kama hivi:
Katika kesi hii binary ilikuwa inaitwa authenticator, hivyo ni wazi kuwa hii ndio kazi kuu inayovutia.
Ukiwa na jina la kazi zinazoitwa, tafuta kuhusu vifaa vyao na matokeo kwenye Intaneti.
Delphi
Kwa binaries zilizokompiliwa kwa Delphi unaweza kutumia https://github.com/crypto2011/IDR
Ikiwa unahitaji kubadilisha binary ya Delphi ningependekeza utumie programu-jalizi ya IDA https://github.com/Coldzer0/IDA-For-Delphi
Bonyeza ATL+f7 (ingiza programu-jalizi ya python kwenye IDA) na chagua programu-jalizi ya python.
Programu-jalizi hii itatekeleza binary na kutatua majina ya kazi kwa njia ya moja kwa moja mwanzoni mwa uchunguzi. Baada ya kuanza uchunguzi bonyeza tena kitufe cha Kuanza (kijani au f9) na kuvunja itafikia mwanzo wa nambari halisi.
Pia ni ya kuvutia sana kwa sababu ikiwa bonyeza kitufe katika programu ya kielelezo cha picha, mchunguzi utasimama kwenye kazi inayotekelezwa na kitufe hicho.
Golang
Ikiwa unahitaji kubadilisha binary ya Golang ningependekeza utumie programu-jalizi ya IDA https://github.com/sibears/IDAGolangHelper
Bonyeza ATL+f7 (ingiza programu-jalizi ya python kwenye IDA) na chagua programu-jalizi ya python.
Hii itatatua majina ya kazi.
Python iliyokompiliwa
Kwenye ukurasa huu unaweza kupata jinsi ya kupata nambari ya python kutoka kwa binary iliyokompiliwa ya ELF/EXE:
{% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %} .pyc.md {% endcontent-ref %}
GBA - Game Body Advance
Ikiwa unapata binary ya mchezo wa GBA unaweza kutumia zana tofauti kwa kuiga na kutatua hitilafu:
- no$gba (Pakua toleo la kurekebisha hitilafu) - Ina kivinjari cha hitilafu na kiolesura
- mgba - Ina kivinjari cha CLI
- gba-ghidra-loader - Programu-jalizi ya Ghidra
- GhidraGBA - Programu-jalizi ya Ghidra
Kwenye no$gba, katika Chaguo --> Wekaanishaji wa Kuiga --> Vidhibiti** ** unaweza kuona jinsi ya kubonyeza vitufe vya Game Boy Advance
Vinapobonyezwa, kila funguo lina thamani ya kumtambua:
A = 1
B = 2
SELECT = 4
START = 8
RIGHT = 16
LEFT = 32
UP = 64
DOWN = 128
R = 256
L = 256
Kwa hivyo, katika aina hii ya programu, sehemu ya kuvutia itakuwa jinsi programu inavyoshughulikia matokeo ya mtumiaji. Katika anwani 0x4000130 utapata kazi inayopatikana kawaida: KEYINPUT.
Katika picha iliyopita unaweza kuona kwamba kazi hiyo inaitwa kutoka FUN_080015a8 (anwani: 0x080015fa na 0x080017ac).
Katika kazi hiyo, baada ya operesheni za kuanzisha (bila umuhimu wowote):
void FUN_080015a8(void)
{
ushort uVar1;
undefined4 uVar2;
undefined4 uVar3;
ushort uVar4;
int iVar5;
ushort *puVar6;
undefined *local_2c;
DISPCNT = 0x1140;
FUN_08000a74();
FUN_08000ce4(1);
DISPCNT = 0x404;
FUN_08000dd0(&DAT_02009584,0x6000000,&DAT_030000dc);
FUN_08000354(&DAT_030000dc,0x3c);
uVar4 = DAT_030004d8;
Imepatikana hii nambari:
do {
DAT_030004da = uVar4; //This is the last key pressed
DAT_030004d8 = KEYINPUT | 0xfc00;
puVar6 = &DAT_0200b03c;
uVar4 = DAT_030004d8;
do {
uVar2 = DAT_030004dc;
uVar1 = *puVar6;
if ((uVar1 & DAT_030004da & ~uVar4) != 0) {
Ikiwa uVar4
iko kwenye funguo za mwisho na sio funguo ya sasa, hii inaitwa kuachilia kitufe (funguo ya sasa imehifadhiwa katika uVar1
).
if (uVar1 == 4) {
DAT_030000d4 = 0;
uVar3 = FUN_08001c24(DAT_030004dc);
FUN_08001868(uVar2,0,uVar3);
DAT_05000000 = 0x1483;
FUN_08001844(&DAT_0200ba18);
FUN_08001844(&DAT_0200ba20,&DAT_0200ba40);
DAT_030000d8 = 0;
uVar4 = DAT_030004d8;
}
else {
if (uVar1 == 8) {
if (DAT_030000d8 == 0xf3) {
DISPCNT = 0x404;
FUN_08000dd0(&DAT_02008aac,0x6000000,&DAT_030000dc);
FUN_08000354(&DAT_030000dc,0x3c);
uVar4 = DAT_030004d8;
}
}
else {
if (DAT_030000d4 < 8) {
DAT_030000d4 = DAT_030000d4 + 1;
FUN_08000864();
if (uVar1 == 0x10) {
DAT_030000d8 = DAT_030000d8 + 0x3a;
Katika msimbo uliopita unaweza kuona kwamba tunalinganisha uVar1 (mahali ambapo thamani ya kitufe kilichobonyezwa iko) na baadhi ya thamani:
- Kwanza, inalinganishwa na thamani 4 (kitufe cha SELECT): Katika changamoto hii kitufe hiki husafisha skrini
- Kisha, inalinganishwa na thamani 8 (kitufe cha START): Katika changamoto hii inathibitisha ikiwa msimbo ni halali kupata bendera.
- Katika kesi hii, var
DAT_030000d8
inalinganishwa na 0xf3 na ikiwa thamani ni sawa msimbo fulani unatekelezwa. - Katika kesi nyingine yoyote, baadhi ya cont (
DAT_030000d4
) inakaguliwa. Ni cont kwa sababu inaongeza 1 mara tu baada ya kuingia katika msimbo.
Ikiwa chini ya 8 kitu kinahusisha kuongeza thamani kwa **DAT_030000d8
** inafanywa (kimsingi inaongeza thamani za vitufe vilivyobonyezwa katika hii var kwa muda mrefu kama cont iko chini ya 8).
Hivyo, katika changamoto hii, kwa kujua thamani za vitufe, ulihitaji kubonyeza kombinisheni yenye urefu mdogo kuliko 8 ambayo matokeo ya kuongeza ni 0xf3.
Kumbukumbu kwa mafunzo haya: https://exp.codes/Nostalgia/
Game Boy
{% embed url="https://www.youtube.com/watch?v=VVbRe7wr3G4" %}
Kozi
- https://github.com/0xZ0F/Z0FCourse_ReverseEngineering
- https://github.com/malrev/ABD (Ufichuaji wa binary)
Kikundi cha Usalama cha Kujaribu Kwa Bidii
{% embed url="https://discord.gg/tryhardsecurity" %}
Jifunze kuhusu kuvamia AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kuvamia kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.