[Discussion] side-channel attacks |
21/01/2011 20:28:24 (+0700) | #1 | 230019 |
truyennxt
Member
|
0 |
|
|
Joined: 18/09/2010 07:51:36
Messages: 17
Offline
|
|
Trong mấy ngày qua mình có đọc về cái kiểu tấn công này. Trong bài đọc mình thấy sơ qua ý chính của kiểu tấn công này là lợi dụng "độ trễ" (latency). Vậy "độ trễ" là gì mà attacker lại tấn công nó mà lấy đi USD ở thị trường chứng khoán. Mình có ý định lên hỏi "độ trễ" là gì, nhưng nghĩ ngẫm "nên tìm hiểu trước khi hỏi". Nên mình ngồi mạng search về cái khái niệm khó hiểu này.
Khái niệm độ trễ biểu thị quãng thời gian bạn phải chờ trước khi nhận được thứ mình cần. Theo từ điển Merriam-Webster thì latency có nghĩa là 'khoảng thời gian từ khi ra lệnh đến khi nhận được sự phản hồi'
Mình chỉ biết là như vậy, và "theo mình nghĩ" thì khi một lệnh A được gửi đi rồi "chờ" phản hồi lại thì attacker sẽ lợi dụng thời điểm đó để có thể "can thiệp" rồi gửi phản hồi "giả". Cộng thêm có thể "chặn" phản hồi "thật".
Vậy về phượng diện "sâu" hơn của "kỹ thuật" thì attacker làm thế nào để "lợi dụng" độ trễ này? |
|
|
|
|
[Discussion] side-channel attacks |
22/01/2011 15:23:50 (+0700) | #2 | 230085 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
truyennxt wrote:
Trong mấy ngày qua mình có đọc về cái kiểu tấn công này. Trong bài đọc mình thấy sơ qua ý chính của kiểu tấn công này là lợi dụng "độ trễ" (latency). Vậy "độ trễ" là gì mà attacker lại tấn công nó mà lấy đi USD ở thị trường chứng khoán. Mình có ý định lên hỏi "độ trễ" là gì, nhưng nghĩ ngẫm "nên tìm hiểu trước khi hỏi". Nên mình ngồi mạng search về cái khái niệm khó hiểu này.
Khái niệm độ trễ biểu thị quãng thời gian bạn phải chờ trước khi nhận được thứ mình cần. Theo từ điển Merriam-Webster thì latency có nghĩa là 'khoảng thời gian từ khi ra lệnh đến khi nhận được sự phản hồi'
Mình chỉ biết là như vậy, và "theo mình nghĩ" thì khi một lệnh A được gửi đi rồi "chờ" phản hồi lại thì attacker sẽ lợi dụng thời điểm đó để có thể "can thiệp" rồi gửi phản hồi "giả". Cộng thêm có thể "chặn" phản hồi "thật".
Vậy về phượng diện "sâu" hơn của "kỹ thuật" thì attacker làm thế nào để "lợi dụng" độ trễ này?
Hiểu sai rồi, side-channel attack dựa vào các thông tin phản hồi trong xử lý thông tin ví dụ như thời gian để dự đoán các tiến trình xử lý của ứng dụng.
Một ví dụ như thế này:
input là string password nhập vào để kiểm tra
Code:
input = args;
for (k=0;k<input.length();k++) {
if (input[k]!=password[k])
exit("wrong password")
else {
for (i=0;i<1000000;i++) { do_something() }
}
}
Đoạn mã trên có thể bị lỗi Side-Channel-Attack, và attacker có thể lợi dụng để tìm ra password. Thử tìm hiểu tại sao xem nhỉ ?> |
|
-- w~ -- |
|
|
|
[Discussion] side-channel attacks |
22/01/2011 17:16:02 (+0700) | #3 | 230091 |
|
freakmind
Member
|
0 |
|
|
Joined: 26/11/2007 02:53:23
Messages: 79
Offline
|
|
WinDak wrote:
truyennxt wrote:
Trong mấy ngày qua mình có đọc về cái kiểu tấn công này. Trong bài đọc mình thấy sơ qua ý chính của kiểu tấn công này là lợi dụng "độ trễ" (latency). Vậy "độ trễ" là gì mà attacker lại tấn công nó mà lấy đi USD ở thị trường chứng khoán. Mình có ý định lên hỏi "độ trễ" là gì, nhưng nghĩ ngẫm "nên tìm hiểu trước khi hỏi". Nên mình ngồi mạng search về cái khái niệm khó hiểu này.
Khái niệm độ trễ biểu thị quãng thời gian bạn phải chờ trước khi nhận được thứ mình cần. Theo từ điển Merriam-Webster thì latency có nghĩa là 'khoảng thời gian từ khi ra lệnh đến khi nhận được sự phản hồi'
Mình chỉ biết là như vậy, và "theo mình nghĩ" thì khi một lệnh A được gửi đi rồi "chờ" phản hồi lại thì attacker sẽ lợi dụng thời điểm đó để có thể "can thiệp" rồi gửi phản hồi "giả". Cộng thêm có thể "chặn" phản hồi "thật".
Vậy về phượng diện "sâu" hơn của "kỹ thuật" thì attacker làm thế nào để "lợi dụng" độ trễ này?
Hiểu sai rồi, side-channel attack dựa vào các thông tin phản hồi trong xử lý thông tin ví dụ như thời gian để dự đoán các tiến trình xử lý của ứng dụng.
Một ví dụ như thế này:
input là string password nhập vào để kiểm tra
Code:
input = args;
for (k=0;k<input.length();k++) {
if (input[k]!=password[k]) {
exit("wrong password")
else {
for (i=0;i<1000000;i++) { do_something() }
}
}
Đoạn mã trên có thể bị lỗi Side-Channel-Attack, và attacker có thể lợi dụng để tìm ra password. Thử tìm hiểu tại sao xem nhỉ ?>
Nếu chủ topic đoán ra được đoạn mã này bị exploit thế nào thì đã không phải ngồi đặt câu hỏi ở đây rồi )
Đoạn mã windak đưa thuộc vào dạng lợi dụng time information trong side channel attack. Cách exploit là dựa vào thời gian mà chương trình process mà đoán password bao gồm những kí tự nào .
Ví dụ đầu tiên bạn sẽ thử cho input là a*** cho đến Z*** và đo thời gian process của từng input một, thằng nào thời gian input lâu nhất thì password sẽ chứa thằng đó, ví dụ ra là b***. Sau đó quá trình này được lặp lại với việc cho input từ ba** đến bZ** .....
Ngoài cách dùng time thì còn cách dựa và power, sound, electromagnetic ( theo như trên wiki ). Nói chung side-channel attack là kiểu attack mà dựa vào những yếu tố "bên lề" chứ không dựa vào lỗi trực tiếp của hệ thống. |
|
|
|
|
[Discussion] side-channel attacks |
22/01/2011 17:20:35 (+0700) | #4 | 230092 |
truyennxt
Member
|
0 |
|
|
Joined: 18/09/2010 07:51:36
Messages: 17
Offline
|
|
WinDak: "side-channel attack dựa vào các thông tin phản hồi trong xử lý thông tin ví dụ như thời gian để dự đoán các tiến trình xử lý của ứng dụng. "
me: Có nghĩa là attacker tấn công vào phần "xác nhận" hoặc có thể hiểu là giai đoạn "khớp" thông tin đúng không bạn.?
ví dụ: 1 trang web yêu cầu đăng nhập để sử dụng hệ thống thì sẽ có "Bảng login". Và khi nhập vào gửi yêu cầu thì sẽ có giai đoạn là "xử lý nhập liệu". Attacker sẽ lợi dụng "code" của giai đoạn xử lý nhập liệu bị lỗi đâu đó mà attack.
hiểu vậy có đúng không nhỉ?
freakmind: "Ví dụ đầu tiên bạn sẽ thử cho input là a*** cho đến Z*** và đo thời gian process của từng input một, thằng nào thời gian input lâu nhất thì password sẽ chứa thằng đó, ví dụ ra là b***. Sau đó quá trình này được lặp lại với việc cho input từ ba** đến bZ** ....."
me: Mình đã đọc qua cái timing này và cộng thêm bạn phân tích điểm này mình hiểu thêm về nó. Thanks. |
|
|
|
|
[Discussion] side-channel attacks |
22/01/2011 20:32:11 (+0700) | #5 | 230100 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
Bạn thử tìm hiểu cách khai thác đoãn mã mà mình post thì sẽ hiểu. Thử viết một đoạn chương trình để exploit xem sao
me: Có nghĩa là attacker tấn công vào phần "xác nhận" hoặc có thể hiểu là giai đoạn "khớp" thông tin đúng không bạn.?
Attacker có thể tấn công vào bất cứ phần nào mà attacker nắm được yếu điểm trong design. Attack này đòi hỏi phải biết rõ về hệ thống ( vd open source ) thì mới thực hiện được.
Cách exploit thế nào, tận dụng ra sao thì tùy trường hợp cụ thể. Nên đọc thêm wiki hoặc google chứ đừng phán đoán mà không có cơ sở |
|
-- w~ -- |
|
|
|
[Discussion] side-channel attacks |
23/01/2011 09:19:17 (+0700) | #6 | 230125 |
lamer
Elite Member
|
0 |
|
|
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
|
|
truyennxt wrote:
Mình chỉ biết là như vậy, và "theo mình nghĩ" thì khi một lệnh A được gửi đi rồi "chờ" phản hồi lại thì attacker sẽ lợi dụng thời điểm đó để có thể "can thiệp" rồi gửi phản hồi "giả". Cộng thêm có thể "chặn" phản hồi "thật".
Đây là định nghĩa của "active attack".
"Side-channel attack", như freakmind diễn đạt, là
freakmind wrote:
kiểu attack mà dựa vào những yếu tố "bên lề" chứ không dựa vào lỗi trực tiếp của hệ thống.
Tưởng tượng như muốn đi tìm hiểu thông tin về bạn gái mà không dám hỏi trực tiếp bạn gái thì chúng ta đi theo họ quan sát họ làm cái gì, hay hỏi han hàng xóm của bạn gái. Những thông tin thu thập được dĩ nhiên là không đảm bảo hoàn toàn chính xác vì nó không phải là thông tin do chính người bạn gái cho ta biết, nhưng tỷ lệ đúng của nó đủ cao để ta có thể tin vào chúng.
Ví dụ (hơi phi thật tế) của WinDak thể hiện rõ sự khác biệt giữa hai luồng thực thi của dữ liệu đúng, và dữ liệu sai. Chính vì vậy, hầu hết những người lập trình kinh nghiệm sẽ không dùng hàm strcmp() để so sánh password với nhau mà sẽ phải sử dụng một hàm tự viết để đảm bảo rằng kết quả của việc so sánh không làm lộ thông tin về dữ liệu so sánh.
Chủ chủ đề có muốn tự viết ra một đoạn mã so sánh chuỗi như vậy rồi cùng thảo luận tiếp không?
|
|
|
|
|
[Discussion] side-channel attacks |
23/01/2011 10:32:15 (+0700) | #7 | 230129 |
truyennxt
Member
|
0 |
|
|
Joined: 18/09/2010 07:51:36
Messages: 17
Offline
|
|
Mình cũng đã đọc và biết là kiểu tấn công này dựa vào yếu tố bên lề như:
--Việc phát ra sóng điện từ của màn hình....
lamer: Chủ chủ đề có muốn tự viết ra một đoạn mã so sánh chuỗi như vậy rồi cùng thảo luận tiếp không?
me: Rất mong muốn được thảo luận tiếp chứ . Mình đang cố gắng học hỏi mà. Mình cũng đang rảnh nên đang ngồi mạng nghiên cứu xem có thể viết được đoạn mã không đây. Có gì mình sẽ hỏi và mong nhận được sự giúp đỡ. |
|
|
|
|
[Discussion] side-channel attacks |
23/01/2011 14:55:44 (+0700) | #8 | 230146 |
lamer
Elite Member
|
0 |
|
|
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
|
|
Chủ thớt viết thử đoạn mã so sánh hai chuỗi đi. |
|
|
|
|
[Discussion] side-channel attacks |
23/01/2011 19:22:59 (+0700) | #9 | 230157 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
lamer wrote:
Chủ thớt viết thử đoạn mã so sánh hai chuỗi đi.
Em gửi một đoạn được không, anh lamer ? chủ topic ? |
|
|
|
|
[Discussion] side-channel attacks |
23/01/2011 20:32:49 (+0700) | #10 | 230163 |
truyennxt
Member
|
0 |
|
|
Joined: 18/09/2010 07:51:36
Messages: 17
Offline
|
|
to cr4zyb0y: Rất vui nếu bạn đã viết xong thì hãy gửi cho mọi người xem.
To lamer: Em thực sự không phải dân chuyên cntt . Em đang theo học Banking và đang muốn học thêm cntt. Vì thế anh bảo em viết code thì em ko thể viết ngay mà phải "đọc hiểu" đã anh ạ . |
|
|
|
|
[Discussion] side-channel attacks |
23/01/2011 23:06:24 (+0700) | #11 | 230176 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
truyennxt wrote:
to cr4zyb0y: Rất vui nếu bạn đã viết xong thì hãy gửi cho mọi người xem.
To lamer: Em thực sự không phải dân chuyên cntt . Em đang theo học Banking và đang muốn học thêm cntt. Vì thế anh bảo em viết code thì em ko thể viết ngay mà phải "đọc hiểu" đã anh ạ .
Code:
ori_pass = "AAA"
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
if __name__ == '__main__':
input = str(raw_input())
if (len(input) == len(ori_pass)) and check_pass(input):
print "You got it !"
Code đây, ai thử attack đi |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 00:27:08 (+0700) | #12 | 230181 |
|
freakmind
Member
|
0 |
|
|
Joined: 26/11/2007 02:53:23
Messages: 79
Offline
|
|
cr4zyb0y wrote:
truyennxt wrote:
to cr4zyb0y: Rất vui nếu bạn đã viết xong thì hãy gửi cho mọi người xem.
To lamer: Em thực sự không phải dân chuyên cntt . Em đang theo học Banking và đang muốn học thêm cntt. Vì thế anh bảo em viết code thì em ko thể viết ngay mà phải "đọc hiểu" đã anh ạ .
Code:
ori_pass = "AAA"
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
if __name__ == '__main__':
input = str(raw_input())
if (len(input) == len(ori_pass)) and check_pass(input):
print "You got it !"
Code đây, ai thử attack đi
Bạn biết strcmp hoạt động theo cơ chế nào không?
Về mặt cơ bản thì strcmp nó cho thời gian tính toán "linear" với từng cụm password khác nhau, hay nói cách khác là strcmp nó làm thời gian tính toán của cụm password đúng và cụm password không đúng là khác nhau.
Cái code của bạn về mặt cơ bản là cũng "linear" như cái strcmp vậy, đơn giản vì khi cái dòng if của bạn gặp password đúng thì nó return luôn, chả hiểu bạn sướng gì ở cái dòng màu đỏ nữa
Lối timing attack của strcmp đơn giản chỉ cần implement một cái hàm đại loại như sau thì có thể "san bằng" thời gian tính của mọi chuỗi nhập vào
Code:
for (i = 0; i < sizeof(secret_passwd); i++) {
result &= (s[i] == secret_passwd[i]);
}
return result;
P/S: chủ topic có thể tham khảo thêm cái file này mình google được, cảm thấy khá là dễ hiểu
http://www.google.com/url?sa=t&source=web&cd=1&sqi=2&ved=0CBIQFjAA&url=http%3A%2F%2Fwww.cs.hmc.edu%2F~mike%2Fpublic_html%2Fcourses%2Fsecurity%2Fs06%2Fprojects%2Fdan.pdf&rct=j&q=strcmp%20timing%20attack&ei=YXM8TZSRK4fRcYzfjYUH&usg=AFQjCNHLiXklpwCCRE-epwd8eoDcxVNyuQ&sig2=Bp7URzX2Ara94a4Gqg5u1Q&cad=rja
|
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 07:12:00 (+0700) | #13 | 230186 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
freakmind wrote:
cr4zyb0y wrote:
truyennxt wrote:
to cr4zyb0y: Rất vui nếu bạn đã viết xong thì hãy gửi cho mọi người xem.
To lamer: Em thực sự không phải dân chuyên cntt . Em đang theo học Banking và đang muốn học thêm cntt. Vì thế anh bảo em viết code thì em ko thể viết ngay mà phải "đọc hiểu" đã anh ạ .
Code:
ori_pass = "AAA"
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
if __name__ == '__main__':
input = str(raw_input())
if (len(input) == len(ori_pass)) and check_pass(input):
print "You got it !"
Code đây, ai thử attack đi
Bạn biết strcmp hoạt động theo cơ chế nào không?
Về mặt cơ bản thì strcmp nó cho thời gian tính toán "linear" với từng cụm password khác nhau, hay nói cách khác là strcmp nó làm thời gian tính toán của cụm password đúng và cụm password không đúng là khác nhau.
Cái code của bạn về mặt cơ bản là cũng "linear" như cái strcmp vậy, đơn giản vì khi cái dòng if của bạn gặp password đúng thì nó return luôn, chả hiểu bạn sướng gì ở cái dòng màu đỏ nữa
Lối timing attack của strcmp đơn giản chỉ cần implement một cái hàm đại loại như sau thì có thể "san bằng" thời gian tính của mọi chuỗi nhập vào
Code:
for (i = 0; i < sizeof(secret_passwd); i++) {
result &= (s[i] == secret_passwd[i]);
}
return result;
P/S: chủ topic có thể tham khảo thêm cái file này mình google được, cảm thấy khá là dễ hiểu
http://www.google.com/url?sa=t&source=web&cd=1&sqi=2&ved=0CBIQFjAA&url=http%3A%2F%2Fwww.cs.hmc.edu%2F~mike%2Fpublic_html%2Fcourses%2Fsecurity%2Fs06%2Fprojects%2Fdan.pdf&rct=j&q=strcmp%20timing%20attack&ei=YXM8T>ZSRK4fRcYzfjYUH&usg=AFQjCNHLiXklpwCCRE-epwd8eoDcxVNyuQ&sig2=Bp7URzX2Ara94a4Gqg5u1Q&cad=rja
Đó chỉ là một đoạn code check password thôi, không có yêu cầu code này không bị lỗi nha. Nên mình thích viết vậy đấy, chủ topic muốn có một ví dụ để thử nghiệm mà ) . Và nếu không biết strcmp hoạt động thế nào, thì mình đã chẳng viết như trên |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 08:01:56 (+0700) | #14 | 230195 |
lamer
Elite Member
|
0 |
|
|
Joined: 26/02/2008 13:28:49
Messages: 215
Offline
|
|
freakmind wrote:
Code:
for (i = 0; i < sizeof(secret_passwd); i++) {
result &= (s[i] == secret_passwd[i]);
}
return result;
Khi đã nói về side channel tức là ta đang nói về cách hiện thức hoá cụ thể của một vấn đề. Mà nhìn vào đoạn code này thì tính đúng đắn, 0 hay 1, của hiện thực không còn nữa.
Giả sử như result là 0 ngay từ đầu thì hàm này trả về cái gì? Đó là chưa kể đến việc có thể bị SEGFAULT vì truy cập vào vùng nhớ chưa xác định trong trường hợp chuỗi s ngắn hơn secret_passwd. Nhưng mà về vấn đề đang bàn ở đây là code vậy được rồi . |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 08:59:20 (+0700) | #15 | 230201 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
Code:
http://crazyboy.bshellz.net/cgi-bin/checkpass.py
đây, cụ thể lun, lấy pass đi nào |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 09:24:10 (+0700) | #16 | 230205 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
Code:
if md5(input_password) == md5(secret_password):
print "Mày đoán trúng password rồi"
else:
print "Mày đoán lại đi"
Em nghĩ đây là cái chống side channel đơn giản nhất
|
|
Cánh chym không mỏi
lol |
|
|
|
[Discussion] side-channel attacks |
24/01/2011 09:48:03 (+0700) | #17 | 230211 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
cr4zyb0y wrote:
Code:
http://crazyboy.bshellz.net/cgi-bin/checkpass.py
đây, cụ thể lun, lấy pass đi nào
đưa cái shell đi, làm trên localhost nó benchmark thời gian chính xác hơn, làm online trên 1 cái freehost có vấn đề trên đường truyền ức chế |
|
Cánh chym không mỏi
lol |
|
|
|
[Discussion] side-channel attacks |
24/01/2011 16:01:20 (+0700) | #18 | 230244 |
|
WinDak
Researcher
|
Joined: 27/01/2002 11:15:00
Messages: 223
Offline
|
|
Lý thuyết là thế thôi, chứ thực tế theo mình attack được là cả một vấn đề. Trừ phi có sự khác biệt thực sự 1s vs 100s chứ không thì các yếu tố gây nhiễu dễ dàng làm sai lệch tính toán. Ví dụ như gamma vừa nói bench trên local server dễ hơn rất nhiều so với remote
Ngay cả Crack RSA-1024 bằng side-channel attack cũng phải chui vào cái server room mà làm thì mới được
http://tech.icrontic.com/articles/1024-bit-rsa-not-cracked-as-engadget-claims/ |
|
-- w~ -- |
|
|
|
[Discussion] side-channel attacks |
24/01/2011 19:10:45 (+0700) | #19 | 230256 |
|
freakmind
Member
|
0 |
|
|
Joined: 26/11/2007 02:53:23
Messages: 79
Offline
|
|
@lamer: Srry vì em không vứt đầy đủ code lên, em chỉ đưa cái cần để chứng minh thôi.
cr4zyb0y wrote:
Đó chỉ là một đoạn code check password thôi, không có yêu cầu code này không bị lỗi nha. Nên mình thích viết vậy đấy, chủ topic muốn có một ví dụ để thử nghiệm mà ) . Và nếu không biết strcmp hoạt động thế nào, thì mình đã chẳng viết như trên
Bạn biết thì bày tỏ luôn, nếu muốn chủ topic thử nghiệm thì nói rõ ra là đoạn code này để thử nghiệm, còn nếu bạn muốn tỏ vẻ thì mình chịu
Btw: Bạn biết strcmp hoạt động thế nào bạn thử nói xem, vứt cả source trong thư viện string.h lên để chứng minh cho chủ topic nữa nhé .
P/S: cũng phải cám ơn bạn mình mới biết trang bzshell, trước đó không biết trang này
@chủ topic: cái lỗi mà thảo luận từ đầu topic là một cái lỗi quá đơn giản, trong cái link mình đưa ở trên có thêm lỗi để crack rsa đó, có lẽ đọc cái đó cũng hiểu ra đc tg đối. |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 20:18:27 (+0700) | #20 | 230259 |
truyennxt
Member
|
0 |
|
|
Joined: 18/09/2010 07:51:36
Messages: 17
Offline
|
|
Thanks mọi người, em đang "đọc và nghiền ngẫm" những cái cơ bản nhất để có thể hiểu được.
Có vấn đề gì mới trong phần này mong mọi người chỉ giáo thêm. |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 20:25:38 (+0700) | #21 | 230261 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
freakmind wrote:
@lamer: Srry vì em không vứt đầy đủ code lên, em chỉ đưa cái cần để chứng minh thôi.
cr4zyb0y wrote:
Đó chỉ là một đoạn code check password thôi, không có yêu cầu code này không bị lỗi nha. Nên mình thích viết vậy đấy, chủ topic muốn có một ví dụ để thử nghiệm mà ) . Và nếu không biết strcmp hoạt động thế nào, thì mình đã chẳng viết như trên
Bạn biết thì bày tỏ luôn, nếu muốn chủ topic thử nghiệm thì nói rõ ra là đoạn code này để thử nghiệm, còn nếu bạn muốn tỏ vẻ thì mình chịu
Btw: Bạn biết strcmp hoạt động thế nào bạn thử nói xem, vứt cả source trong thư viện string.h lên để chứng minh cho chủ topic nữa nhé .
P/S: cũng phải cám ơn bạn mình mới biết trang bzshell, trước đó không biết trang này
@chủ topic: cái lỗi mà thảo luận từ đầu topic là một cái lỗi quá đơn giản, trong cái link mình đưa ở trên có thêm lỗi để crack rsa đó, có lẽ đọc cái đó cũng hiểu ra đc tg đối.
tỏ vẻ với bạn làm mẹ gì, rách việc .
Còn thích source à, đây :
Code:
/* Copyright (c) Microsoft Corporation. All rights reserved. */
#include <mmlite.h>
#include <tchar.h>
#if defined(_MSC_VER) && !defined(_DEBUG)
#pragma function(strcmp)
#endif
#if defined(_MSC_VER) && (_MSC_VER != 1400 || !defined(ppc)) && (_MSC_VER != 1310) && (_MSC_VER != 1200) && defined(_UNICODE)
#pragma function(wcscmp)
#endif
/* Compare strings pointed by pSrt1, pSrt2. Return 0 if same, < 0 if pStr1
* less then pStr2, > 0 otherwise.
*/
int _tcscmp(const _TCHAR *pStr1, const _TCHAR *pStr2)
{
_TCHAR c1, c2;
INT v;
do {
c1 = *pStr1++;
c2 = *pStr2++;
/* the casts are necessary when pStr1 is shorter & char is signed */
v = (UINT)c1 - (UINT)c2;
} while ((v == 0) && (c1 != '\0'));
return v;
}
copyright @ Mircosoft nhá =]]
@g4mm4 : em hông có host, mà cái time link trên nó trả về khá ổn định đó anh, thử đi nhé |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 21:44:56 (+0700) | #22 | 230265 |
|
freakmind
Member
|
0 |
|
|
Joined: 26/11/2007 02:53:23
Messages: 79
Offline
|
|
cr4zyb0y wrote:
tỏ vẻ với bạn làm mẹ gì, rách việc .
Còn thích source à, đây :
Code:
/* Copyright (c) Microsoft Corporation. All rights reserved. */
#include <mmlite.h>
#include <tchar.h>
#if defined(_MSC_VER) && !defined(_DEBUG)
#pragma function(strcmp)
#endif
#if defined(_MSC_VER) && (_MSC_VER != 1400 || !defined(ppc)) && (_MSC_VER != 1310) && (_MSC_VER != 1200) && defined(_UNICODE)
#pragma function(wcscmp)
#endif
/* Compare strings pointed by pSrt1, pSrt2. Return 0 if same, < 0 if pStr1
* less then pStr2, > 0 otherwise.
*/
int _tcscmp(const _TCHAR *pStr1, const _TCHAR *pStr2)
{
_TCHAR c1, c2;
INT v;
do {
c1 = *pStr1++;
c2 = *pStr2++;
/* the casts are necessary when pStr1 is shorter & char is signed */
v = (UINT)c1 - (UINT)c2;
} while ((v == 0) && (c1 != '\0'));
return v;
}
copyright @ Mircosoft nhá =]]
@g4mm4 : em hông có host, mà cái time link trên nó trả về khá ổn định đó anh, thử đi nhé
Những người trình độ chưa ra đâu vào đâu mà có cách nói năng như bạn chắc khó mà tiến được, khuyên chân thành
Trở lại vấn đề chính, cái mình muốn nói khi mình nói bạn show code của strcmp là vì strcmp trong glibc nó được implemented bằng assembly code nên mới bảo bạn show và thử phân tích thôi, ai dè bạn lại code bằng window làm mất cái để phân tích
P/S: gamma có bảo bạn có host không hay đâu, gamma bảo bạn đưa cái python code của bạn để test trên localhost cơ mà?? Em hok có host là em hok có localhost à
|
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 21:58:12 (+0700) | #23 | 230266 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
freakmind wrote:
cr4zyb0y wrote:
tỏ vẻ với bạn làm mẹ gì, rách việc .
Còn thích source à, đây :
Code:
/* Copyright (c) Microsoft Corporation. All rights reserved. */
#include <mmlite.h>
#include <tchar.h>
#if defined(_MSC_VER) && !defined(_DEBUG)
#pragma function(strcmp)
#endif
#if defined(_MSC_VER) && (_MSC_VER != 1400 || !defined(ppc)) && (_MSC_VER != 1310) && (_MSC_VER != 1200) && defined(_UNICODE)
#pragma function(wcscmp)
#endif
/* Compare strings pointed by pSrt1, pSrt2. Return 0 if same, < 0 if pStr1
* less then pStr2, > 0 otherwise.
*/
int _tcscmp(const _TCHAR *pStr1, const _TCHAR *pStr2)
{
_TCHAR c1, c2;
INT v;
do {
c1 = *pStr1++;
c2 = *pStr2++;
/* the casts are necessary when pStr1 is shorter & char is signed */
v = (UINT)c1 - (UINT)c2;
} while ((v == 0) && (c1 != '\0'));
return v;
}
copyright @ Mircosoft nhá =]]
@g4mm4 : em hông có host, mà cái time link trên nó trả về khá ổn định đó anh, thử đi nhé
Những người trình độ chưa ra đâu vào đâu mà có cách nói năng như bạn chắc khó mà tiến được, khuyên chân thành
Trở lại vấn đề chính, cái mình muốn nói khi mình nói bạn show code của strcmp là vì strcmp trong glibc nó được implemented bằng assembly code nên mới bảo bạn show và thử phân tích thôi, ai dè bạn lại code bằng window làm mất cái để phân tích
P/S: gamma có bảo bạn có host không hay đâu, gamma bảo bạn đưa cái python code của bạn để test trên localhost cơ mà?? Em hok có host là em hok có localhost à
bây giờ thì rỏ thèn nào thích tỏ vẻ rồi nhé ) |
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 22:10:00 (+0700) | #24 | 230268 |
|
freakmind
Member
|
0 |
|
|
Joined: 26/11/2007 02:53:23
Messages: 79
Offline
|
|
cr4zyb0y wrote:
bây giờ thì rỏ thèn nào thích tỏ vẻ rồi nhé )
Tớ vốn không thích tranh cãi nhưng tớ muốn trình bày rõ một cái là tớ không có thói quen tỏ vẻ trên 4rum , tỏ vẻ ngoài đời thích hơn nhiều chứ, 4rum có ai biết mình là ai đâu.
Tớ bỏ thời gian ra phân tích, tìm tài liệu, mục đích cuối cùng là chia sẻ cái tớ biết, còn bạn xem bạn làm cái gì nhé :vứt lên đoạn code rồi cười khẩy, phân tích thì không phân tích, mục đích bạn tham gia topic này làm gì vậy, tự bạn nghĩ nhé???
|
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 22:20:40 (+0700) | #25 | 230270 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
Thôi nào bình tĩnh đi mấy bồ hai bồ đang thảo luận rất đúng hướng về vấn đề side-channel attack mà
Nhận tiện thảo luận về vấn đề Side-Channel attack, tớ thắc mắc không rõ Social Engineering có phải là một dạng Side-Channel attack ko ? vì nó cũng không tấn công ngay vào trực diện đối tượng mà tấn công các đối tượng gián tiếp |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] side-channel attacks |
24/01/2011 22:32:58 (+0700) | #26 | 230272 |
|
freakmind
Member
|
0 |
|
|
Joined: 26/11/2007 02:53:23
Messages: 79
Offline
|
|
|
|
[Discussion] side-channel attacks |
24/01/2011 22:58:46 (+0700) | #27 | 230276 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
freakmind wrote:
cr4zyb0y wrote:
bây giờ thì rỏ thèn nào thích tỏ vẻ rồi nhé )
Tớ vốn không thích tranh cãi nhưng tớ muốn trình bày rõ một cái là tớ không có thói quen tỏ vẻ trên 4rum , tỏ vẻ ngoài đời thích hơn nhiều chứ, 4rum có ai biết mình là ai đâu.
Tớ bỏ thời gian ra phân tích, tìm tài liệu, mục đích cuối cùng là chia sẻ cái tớ biết, còn bạn xem bạn làm cái gì nhé :vứt lên đoạn code rồi cười khẩy, phân tích thì không phân tích, mục đích bạn tham gia topic này làm gì vậy, tự bạn nghĩ nhé???
phân tích thì ở trên mấy bạn đã phân tích rồi ,còn trước khi post code là mình hỏi rồi nhé, và chủ topic bảo có code thì post lên, mình post lên thôi, việc gì phải xoắn nhỉ
@g4mm4 : code đây anh
Code:
#!/usr/bin/python
from datetime import datetime
import cgi
ori_pass = "xxxxxxxxxxxxxx"
def get_param(form, param,default=None):
if form.has_key(param):
return form.getvalue(param)
return default
def check_pass(input):
i = 0
for c in ori_pass :
if(c != input[i]):
return False
else :
i = i + 1
return True
def check_secure(input):
result = True
i = 0
if len(input) == 0 :
return False
if (len(input) > len(ori_pass)) or (len(input) < len(ori_pass)):
input = ori_pass
result = False
for c in ori_pass :
result = result & (input[i] == c)
i = i + 1
return result
if __name__ == '__main__':
print "Content-Type: text/html" # header
print # blank line
print """<html>
<head>
<title>Got the pass, bitch !</title>
</head>
<body>
<h1><font color="red"> Got the pass , win the game !</font> </h1>
<form action="?" method="POST">
<table >
<tr>
<td style="text-align:right">Password : </td>
<td><input type="text" value="" size="10" name="pass" /></td>
</tr>
</table>
<input type="submit" value="Check normal" name="checkpass">
<input type="submit" value="Check secure" name="checkpass">
</form>
</body>
</html>
"""
form = cgi.FieldStorage()
command = get_param(form,"checkpass")
if command == "Check normal" :
input_pass = get_param(form,"pass")
start = datetime.now().microsecond
if (len(input_pass) == len(ori_pass)) and check_pass(input_pass):
print "<p>You got it!</p>"
times = datetime.now().microsecond - start
print "<script>alert(\' spent "+ str(times) +" microseconds\')</script>"
elif command == "Check secure" :
input_pass = get_param(form,"pass")
start = datetime.now().microsecond
if check_secure(input_pass):
print "<p>You got it!</p>"
times = datetime.now().microsecond - start
print "<script>alert(\' spent "+ str(times) +" microseconds\')</script>"
p/s : theo mình social engingeering đánh trực tiếp vào đối tượng, nên không thể nói "side-channel" đc |
|
|
|
|
[Discussion] side-channel attacks |
25/01/2011 00:21:55 (+0700) | #28 | 230281 |
|
xnohat
Moderator
|
Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
|
|
Mọi người dĩ hoà vi quý, mỗi người bớt một chút để tiếp tục thảo luận nhé
Social Engineering theo tôi thì nó bem gián tiếp chứ crazyboy, đối tượng trực tiếp nhắm tới là hệ thống thông tin, còn đối tượng bị tấn công trực tiếp lại là con người điều hành hệ thống đó |
|
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline |
|
|
|
[Discussion] side-channel attacks |
25/01/2011 06:24:06 (+0700) | #29 | 230285 |
cr4zyb0y
Member
|
0 |
|
|
Joined: 27/05/2010 11:50:30
Messages: 51
Offline
|
|
với side channel attack, có 3 yếu tố chính : kẻ tấn công, đối tượng để khai thác thông tin, và thông tin (bao gồm cách thức khai thác, lỗi khai thác và loại thông tin bị lộ) . trong đó, việc gián tiếp, trực tiếp là nói đến cách thức lấy thông tin và thông tin bị lộ.
Với side channel attack, với cách thức lấy thông tin nhất định, thông tin bị lộ là bất đắt dĩ và nằm ngoài tầm kiểm soát của "hoạt động" ấy . Còn với Social engineering thì khác, cách thức lấy thông tin và thông tin bị lộ là trực tiếp, kẻ tấn công , bằng các biện pháp khác nhau mà khai thác thông tin từ người bị tấn công (người bị tấn công chủ động đưa các thông tin đó ra)
mà thấy tự nhiên bàn chuyện social engineering, nhạt quá . có bạn nào break cái password mình chưa :-" |
|
|
|
|
[Discussion] side-channel attacks |
25/01/2011 07:46:52 (+0700) | #30 | 230290 |
|
AIO
Member
|
0 |
|
|
Joined: 21/02/2008 23:44:02
Messages: 127
Offline
|
|
|
chẳng ai nghĩ gì về mình cả |
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|