2010-09-27:

Ciekawostki #1

press
Odzew na pytanie zadane wczoraj był całkiem niezły, więc oto publikuje pierwszy zestaw linków, ciekawostek, etc. Zachęcam do komentowania ofc.

-=*) Elektronika
http://hackaday.com/2010/09/26/portable-password-vault/
Prosty device (custom made ofc) do przechowywania haseł, który podpina się pod USB i który wprowadza dane hasło udając klawiaturę. Fajne, szczególnie podoba mi się udawanie klawiatury :)

-=*) Programowanie
Przez przypadek natknąłem się dzisiaj na text UI w GDB. Przyznaje, że nie wiedziałem, że coś takiego istnieje.
gdb -tui lub gdbtui
http://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html

-=*) Programowanie
Pisząc pewien programik w C++ (g++) potrzebowałem, w momencie kompilacji, wrzucić zawartość pewnego pliku (nazwijmy go asdf.txt) do stałej (const char content_of_asdf[]).
Wpadłem na trzy pomysły:
- skonwertować zawartość asdf.txt do postaci “\xHE\xXA\xDE\xCY\xMA\xLN\xEJ” i #include’nąć postać skonwertowaną
- wrzucić asdf.txt do resource’ów i skorzystać z LoadResource (niestety, Windows-only)
- skonwertować asdf.txt do pliku objektowego
W przypadku tego ostatniego Tavis powiedział mi, że można to zrobić za pomocą standardowego narzędzia objcopy (pakiet GNU binutils):
objcopy -I binary -O elf32-i386 asdf.txt asdf.o \
--alt-machine-code=3 --redefine-sym=_binary_asdf_txt_start=content_of_asdf

extern const char content_of_asdf[];

-=*) Research
http://dcs.ics.forth.gr/Activities/papers/gpumalware.malware10.pdf
Papierek o wykorzystaniu CUDA w loaderze packera plików wykonywalnych (pomysł brzmi: moduły rozpakowujące AV/etc tego nie obsługują).
(szczerze mówiąc, to papierek raczej bardzo odkrywczy nie jest, ale czuje kronikarski obowiązek odnotowania powstania PoC takiego packera; sekcja future attacks w większości też wydaje mi się naciągana, może z wyjątkiem botnetów używających GPU do łamania haseł)

I tyle...

Comments:

2010-09-27 22:05:17 = u
{
objcopy też można, ale zamiast wklepywać przydługą komendę można użyć: xxd -i plik. xxd jest częścią vima, więc dość często spotykany
}
2010-09-27 22:46:24 = przemoc
{
O TUI też długo nie wiedziałem i wielu wciąż nie wie. Przyznam, że za nagim gdb jakoś szczególnie nie przepadam. Polecam za to frontend w postaci cgdb, również konsolowy, dla mnie (i chyba nie tylko) o wiele wygodniejszy niż surowy gdb. Wpadłem na niego lata temu jeszcze przed TUI. Warto wspomnieć na szybko, że można się do niego dobrać także poleceniem "wi" wewnątrz gdb.
Qt Creator też całkiem nieźle współpracuje z gdb.
}
2010-09-28 15:27:41 = Dreadlish
{
Widziałem coś bardzo podobnego, tylko służącego jako keylogger sprzętowy i walnięte na pająku. Można się zabawić przy odpowiednim procku.

Co do gdb - TO GDB MA W OGÓLE JAKIEŚ UI? Pirsze słysze.

Pierwsze linki a widze że jest fajnie ;p Oby było lepiej.
}
2010-09-28 20:41:18 = Gość
{
Wykryto nowy sprzęt: "Keylogger", trwa instalowanie urządzenia... Czasem stary, pocziwy windows jest nie zastąpiony.
}
2010-09-30 06:23:15 = Gynvael Coldwind
{
@u
Tzn pomysł i tak brzmiał żeby to do Makefile wrzucić, więc czy to będzie długa komenda czy krótka i tak wielkiej różnicy nie robi.
Niemniej jednak thx za info o xxd, przyznaje że o tym nie wiedziałem ;>

@przemoc
cgdb mówisz... rzucę potem okiem ;)
Co do gdb, no faktycznie nie jest to najbardziej intuicyjny debugger jaki widziałem. Niemniej jednak krzywa uczenia gdb i tak wygląda lepiej niż windbg, a jeśli chodzi o możliwości gdb, to są całkiem przyzwoite (np. w porównaniu z bochsdbg).

@Dreadlish
:)

@Gość
Hehe ;)
}
2010-10-11 06:42:02 = Gość
{
--alt-machine-code=3 ?
Użycie tej opcji z róznymi wartościami daje w wyniku "unknown alternate machine code" a nie bardzo wiem z kąd mogę wziąść wartości Index ( manual ) dla tego argumentu, plik się kompiluje, object się linkuje z następującym msg:

warning: unknown architecture of input file `readme.o' is incompatible with i386 output

a o to binarka:
readme.o: ELF 32-bit LSB relocatable, no machine, version 1 (SYSV), not stripped

Jak widać "no machine" powoduje całe zamieszanie", wie ktoś z kąd wziąść wartość index dla argumentu --alt-machine-code=INDEX ?
}
2010-10-11 06:48:07 = Gość
{
Wygląda na to że offset 0x12 pliku readme.o ( skompilowanego z readme.txt ) ma zlą wartość 0x00 a powinien mieć w tym przypadku 0x03 dla --alt-machine-code=3 ale tak nie jest.
}
2010-10-11 14:34:43 = Gynvael Coldwind
{
@Gość
Co do wartości, ja wziąłem z /usr/include/linux/elf-em.h
#define EM_386 3
Natomiast nie mam pod ręką x86 żeby sprawdzić co może być nie tak :(
Postaram się sprawdzić w ciągu kilku dni jak się jakiś x86 napatoczy.
}
2010-10-19 08:09:59 = Gość
{
@Gyn
Racja, nie wziąłem tego pod uwagę, kompilacja powinna przebiegać w tym wypadku z użyciem opcji -m32 co pominąłem kompilując na maszynie 64bit ;/ i wszystko działa jak należy.

Ps. dla maszyny 64bit alt-machine to 62 co znalazłem w podanym przez ciebie nagłówku
}

Add a comment:

Nick:
URL (optional):
Math captcha: 4 ∗ 3 + 5 =