Alternate Data Streams (ADS)

Aplicații practice, dar de bază, ale ADS în mediile CTF și Pentesting

Atunci ce sunt Alternate Data Streams (ADS) ?

Este o caracteristică care a fost adăugată la New Technology File System, cunoscut și sub numele de NT File System (NTFS), pentru a crește comparabilitatea cu Macintosh Hierarchical File System (HFS), în termeni simpli, este ceva care a facilitat utilizarea fișierelor dvs. atât pe Mac (Apple), cât și pe PC (Windows).

Cum funcționează și de ce ar trebui să-mi pese de el?

De obicei, atunci când salvați ceva într-un fișier, un fișier .txt de exemplu, stocați conținutul fișierului dvs.(text ascii) într-un flux de date pe care Windows îl recunoaște ca fiind fluxul implicit, astfel încât data viitoare când deschideți fișierul dvs. veți accesa același flux pentru a vizualiza datele.

Ca exemplu

Dacă creez un fișier .txt folosind Notepad pe sistemul meu Windows și îl salvez într-un fișier (secret.txt), atunci de fiecare dată când îl deschid voi vedea datele mele.

Secret.txt Notepad

Secret.txt Notepad

Secret.txt Notepad

Dar ce se întâmplă dacă există mai multe date în fișier de care nu sunteți conștienți?

Atunci intră în joc fluxurile alternative de date.

Voi folosi cmd.exe (Command Prompt) pentru a demonstra exemplele pentru a ușura înțelegerea CLI (Command Line Interface), dar aceleași rezultate pot fi obținute și folosind Power Shell.

Așa că atunci când folosesc Command Prompt pentru a vizualiza conținutul directorului meu, pot vedea secretul meu.txt și dimensiunea fișierului fiind de 33 de octeți.

dir
command prompt

command prompt

Acesta arată ca un fișier normal, dar ce se întâmplă dacă adaug /r la comanda mea ?

dir /r
Command prompt dir /r

Command prompt dir /r

Acum putem vedea un alt fișier în același director cu același prefix ca și secretul nostru creat inițial.txt, dar cu sufixul evil.txt, în timp ce $DATA ne spune că acesta este un flux de tip $DATA.

Aducând /r la comanda noastră, putem vedea că ambele fișiere se află în același director, dar putem vedea doar secretul.txt pe desktop, putem vedea, de asemenea, diferența de dimensiune a fișierului, în timp ce fișierul nostru secret.txt are încă 33 de octeți, fișierul nostru secret.txt:evil.txt are 74 de octeți, ceea ce este de peste 2 ori mai mult decât secret.txt.

Comparând rezultatul ambelor comenzi.

# First Command
dir# Second Command
dir /r
Comandă Prompt dir și dir /r

Comandă Prompt dir și dir /r

În acest mod putem vedea informațiile prin ambele comenzi cu mai multă acuratețe suntem capabili să vedem schimbările într-o perspectivă mai clară.

  • Ambele ieșiri spun că există doar 2 fișiere în director și ne dau aceeași dimensiune, acest lucru se datorează faptului că secret.txt și secret.txt și secret.txt:evil.txt sunt același fișier, nu fișiere diferite, dar datele sunt stocate în fluxuri separate.
  • Spațiul total utilizat în director și disponibil în sistem este în continuare același.

Să vizualizăm conținutul celor două împreună:

În timp ce le vizualizăm pe amândouă putem vedea că conținutul este diferit, putem vedea și diferența de nume a fișierelor, ceea ce ne dă ideea că putem stoca cu ușurință informații într-un flux de date alternativ pentru scopuri multiple. Fluxurile de date urmează o convenție de bază de denumire în sistemul de fișiere NTFS, care este FileName:StreamName:StreamType, având în vedere că numele complet al fișierului secret.txt în sistemul de fișiere NTFS ar fi secret.txt::$DATA

O metodă alternativă pentru a le vizualiza ambele fără a le deschide în notepad ar fi:

# View secret.txt
type secret.txt# View Alternate Data Stream
more < secret.txt:evil.txt