2/26/2017

[PYTHON] pudb(console base debugger)를 이용하여 python script 디버깅하기

파이썬 코드때문에 웹을 돌아다니던 중 stackoveflow에서 쓸만한 python debugger를 하나 찾았습니다.
http://stackoverflow.com/questions/1623039/python-debugging-tips

바로 pudb라는 python 모듈입니다. 이 모듈은 파이썬 코드를 쉽게 디버깅하기 위해 만들어진 모듈입니다. 오늘은 이 모듈을 사용하여 python 코드에 대해 디버깅하는 방법을 공유드리겠습니다.


What is pudb

pudb는 console 기반의 python 디버거입니다. 전체적인 느낌은 DOS를 많이 따라가고 코드단을 보면서 디버깅이 가능합니다. 단순해보이지만 많은 기능을 담고 있습니다.

https://pypi.python.org/pypi/pudb
(원격 디버깅도 지원하죠)

Its goal is to provide all the niceties of modern GUI-based debuggers in a more lightweight and keyboard-friendly package. PuDB allows you to debug code right where you write and test it–in a terminal. If you’ve worked with the excellent (but nowadays ancient) DOS-based Turbo Pascal or C tools, PuDB’s UI might look familiar.

아래 링크 참고해주세요~

https://pypi.python.org/pypi/pudb

Install pudb

설치는 아주 간단합니다. pip 로 설치해줍니다.
#> pip install pudb

또는.. github에서 받으셔도 됩니다.

#> git clone http://git.tiker.net/trees/pudb.git

Python script debugging with pudb module


pudb는 콘솔라인 디버거로 gui 사용이 어려울 때 좋은 효율을 낼 수 있습니다.
실행하는 법 또한 간단합니다. python 의 -m 옵션으로 설치도니 pudb를 로드하고. 대상 파이썬 파일을 지정해주면.. 디버깅 모드로 열리며 python 코드를 보면서 메모리 값과 변수값을 추적할 수 있습니다.

#> python -m pudb.run test.py

or

#> pudb my-script.py

코드상에서 pudb를 불러오기 위해서는 다른 라이브러리와 같이 import 를 사용하여 로드한 후


Reference

Share: | Coffee Me:

[DEBIAN] Intro Memcahed and Accessing Memcached from the command line

최근에 Memcached 관련 3rd party application에 대해 개인적으로 아아아아...주 잠깐 분석을 했던지라 관련 내용으로 포스팅합니다.

What is Memcached?

Memcached는 범용 분산 메모리 캐싱 시스템입니다. 일반적으로 DB의 부하를 줄이고 동적 웹 어플리케이션의 속도 향상을 위해 사용되죠.
오픈소스 소프트웨어이며 Data나 Object를 RAM에 캐싱하는 방식으로 많이 사용됩니다.

이해를 돕기위해 일단적으로 DB만 사용하는 것과 memcached를 사용한 것 모두 샘플 코드를 보겠습니다. (https://en.wikipedia.org/wiki/Memcached 내 code)

Only DB

function get_foo(int userid)
 {
    data = db_select("SELECT * FROM users WHERE userid = ?", userid); // 단순하게 DB에서 데이터를 조회해서
    return data; // 반환합니다.
 }

With Memcached

 function get_foo(int userid)
 {
    data = memcached_fetch("userrow:" + userid); // userid 가 메모리 캐시에 있는지 확인 후
    if (!data) {
       data = db_select("SELECT * FROM users WHERE userid = ?", userid); // db로 부터 얻어온 값을 ..
       memcached_add("userrow:" + userid, data);  // memcached로 넣어줍니다.
    }
    return data; // 그 이후부터는 memcached를 이용하여 데이터를 사용하겠죠.
 }

간단합니다.

Connecting to memcached server using telnet

일단 telnet이나 nc로도 쉽게 memcached 서버로 접근하여 값을 읽어오거나 수정, 추가할 수 있습니다.
먼저 telnet을 통해 서버로 연결합니다. (기본 포트는 11211 입니다)

#> telnet 127.0.0.1 11211

텔넷 세션이 열려있는 상태에서 명령어를 주게 되면 여러가지 동작을 할 수 있습니다.
먼저 정상 연결 확인을 위해 stats 명령을 이용해 status 를 보겠습니다.

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats     
STAT pid 7822
STAT uptime 11213
STAT time 1487915288
STAT version 1.4.25 Ubuntu
STAT libevent 2.0.21-stable
STAT pointer_size 64

잘 되네욥.


Show Key list

먼저 현재 저장된 키 리스트를 보는 명령입니다. Basic 명령은 Add del  부터 시작하겠지만, 그냥 이걸 먼저 알아두면 편할거 같기에 맨 위로 올렸습니다. 

stats 명령은 여러가지 상태값을 볼 수 있습니다. telnet 으로 접근했을 때 바로 사용했던거죠. 여기서 하나의 하위 옵션으로 stat을 볼 수 있는데, 이 중 items를 통해 현재 저장된 메모리캐시 값을 볼 수 있습니다. 

stats items
STAT items:1:number 1
STAT items:1:age 2365
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 3

stats 명령을 활용하면 쉽게 키 리스트를 알아낼 수 있습니다.

Add to key/value

memcache에 key와 값을 추가하는 명령입니다. 
아래 순서대로 들어가며, key는 key의 이름, flags(int, char등) , exptime 유효시간,
bytes는 크게를 의미하고 각각 value 는 %0d%0a(\r\n) 이후에 값, 그리고 뒤에 다시 똑같이 개행문자를 붙여줘야 인식됩니다. 

add <key> <flags> <exptime> <bytes> \r\n<value>\r\n
set <key> <flags> <exptime> <bytes> \r\n<value>\r\n

e.g

add hahwul_data 0 900 5

12345
이런식으로 데이터가 들어갔다면.. hahwul_data 라는 키를 생성하고, 5byte에 12345를 저장합니다.

Delete to key/value

delete <key> [<time>] \r\n


Quit

처음에 아무생각없이.. Ctrl+C, D를 연타했었네요. quit 로 명령쉘 탈출이 가능합니다.

quit

Other command

set
add
get
delete
replace
prepend
flush_all
incr
decr
stats
 - stats slabs
 - stats items
 - stats malloc
 - stats detail
 - stats size
 - stats reset
version
quit

주요한건 요정도가 있고.. 자세한건 위키 문서 참고하심이 좋을 듯 싶네요.
http://zetawiki.com/wiki/Memcached_%EB%AA%85%EB%A0%B9%EC%96%B4

Reference

https://en.wikipedia.org/wiki/Memcached
https://blog.elijaa.org/2010/05/21/memcached-telnet-command-summary/
http://zetawiki.com/wiki/Memcached_%EB%AA%85%EB%A0%B9%EC%96%B4
Share: | Coffee Me:

2/21/2017

[WEB HACKING] Bypass XSS Blank filtering with Forward Slash

XSS 테스팅 시 가끔씩 발목을 잡는 친구가 있습니다. 바로 Blank 필터링인데요. 태그 사용이 제한된 상황에선 굉장히 짜증나는 존재죠. (다된 것 같은데..output이 안나오는 상황)

오늘은 이 Blank 필터링을 우회하는 간단한 트릭을 이야기할까 합니다.

Blank Filtering?

먼저 간략하게 Blank Filtering에 대해 이야기하겠습니다. 많은 곳들이 적용한 필터링 방식 중 하나이며 단순히 공백에 대해 처리하는 필터링입니다. 예를들면 이런 케이스죠.

Attack: asd" onload="alert(45)" a="
Output
<img src="test.jpg" name="asd"onload="alert(45)"a="">

이렇게 공백에 대해서 날리게되면 사실상 공백이 필요없는 <script> 태그 이외에는 많은 XSS Payload 들이 효력을 잃습니다.
또한 필터링 규칙을 파악했다해도.. 대부분 공격코드에서 공백은 사용할 수 밖에 없기 때문에 공격자 입장에서 아주 불편하게되죠.


일반적인 Filtering(URL Encode / Plus / etc..)

대체로 많이 사용하는 기법들은 URL 인코딩 + 등을 활용한 방법이 있습니다. 생각보다 잘 먹히긴하지만 문자열 검증이 아니라 Decode 후에 검증하는 로직에선 하나도 먹히질 않죠.. 이건 URL만이 아닌 다른 인코딩 기법들도 동일합니다.

Attack: asd"%20onload="alert(45)
Output
<img src="test.jpg" name="asd" onload="alert(45)">




Bypass Filtering - Forward Slash(/)

오늘 소개해드릴 방법은 Slash를 이용한 기법입니다. HTML에서 각 속성 사이를 구별하기 위해선 공백을 넣어 속성들을 구별하게 됩니다.

<img src="url" onclick="viewImage(this)">

분해해서 보면 <img> 태그에 src라는 속성과 onclick 이란 속성 2가지로 나눌 수 있습니다.
자 그럼 속성으로 분리하는 방법은 공백만 가능할까요? 아닙니다. 바로 /(Slash) 문자를 이용해서도 문리가 가능합니다.

<img src="url"/onclick="viewImage(this)">

이런 형태의 구문이 성립할 수 있는거죠. 실제로 실행되는지 알아보기 위해서 간단하게 작성해보았습니다.

<html>
<body>

<img src="url"/onclick="console.log('run onclick!')">

</body>
</html>


자 그럼 실제 XSS에선 어떻게 활용될까요? 뭐 이미 위에서 다 했네요..ㅋㅋ

아래 필터링 규칙은 각종 인코딩을 하여도 강제로 푼다고 가정합시다.

Attack: asd"%20onerror="alert(45)
Output
<img src="test.jpg" name="asd"onerror="alert(45)">

공격자는 아래와 같은 Payload를 전달하여 필터링을 우회하죠.

Attack: asd"/onerror="alert(45)
Output
<img src="test.jpg" name="asd"/onerror="alert(45)">

이런식으로 들어간 구문은 아래와 같이 src가 없기 때문에 onerror 이벤트가 발생하고, 슬래시로 정상 구문으로 받아 alert() 함수가 실행되게 됩니다.


유사한 형태로 아래와 같은 공격코드를 만들수도 있겠네요.


<svg/onload=alert(45)>
<iframe/src=javascript:alert(45)>

등등 활용가치는 많습니다 : )


Share: | Coffee Me:

2/10/2017

[METASPLOIT] Hardware pentest using metasploit - Hardware-Bridge


최근 Rapid7사에서 재미있는 내용을 발표했었습니다. 바로 Metasploit Framework의 Hardware-Bridge 기능입니다.
이로써 Metasploit은 소프트웨어와 하드웨어 모두 공격이 가능한 프레임워크가 되었네요.

아래 구글그룹스 내용과 공식 포스팅을 보시면 관련 내용이 있습니다.

https://groups.google.com/forum/#!msg/open-garages/Oa2WQRf0s_4/RtoaaJcBCAAJ
https://community.rapid7.com/community/transpo-security/blog/2017/02/02/exiting-the-matrix



What is Hardware-Bridge in Metasploit

자 그럼 Hardware-Bridge가 무엇인지 더 알아봐야겠죠? 이 친구는 하드웨어 해킹을 돕기 위한 도구입니다. 네트워크에 연결된 디바이스는 공격하기 수월하지만 단절된 망의 디바이스는 공격하기 어렵습니다. 무언가 물리적인 접근이 필요하죠. 또한 흐르는 트래픽도 그에 맞는 프로토콜을 타는지라 프레임워크를 통한 분석은 어려웠습니다. (직접 한땀한땀...)

Hardware-Bridge는 자동차나 임베디드 기기 등에서 사용되는 Controller Area Network(CAN)에 대한 테스트를 지원합니다. 공격자 관점에서 툴을 통해 접근할 수 있는 부분이 늘어났고, 보안적인 관점에서도 심도있게 봐야할 부분이 늘어난거죠. 실제 업데이트된 MSF를 통해 하나하나 보겠습니다.

Hardware-Bridge는 크게 아래와 같이 Server와 Client로 구성되어 있습니다.

auxiliary/server/local_hwbridge normal > Hardware Bridge Server
auxiliary/client/hwbridge/connect > Hardware Bridge Client


Server는 하드웨어와 Metasploit 사용자를 이어주는 다리이고, 사용자는 Client 를 통해서 Server에 접근 후 세션을 얻어 작업을 진행하게 됩니다.
이 세션에서 작업하는 명령이나 코드들은 서버에서 처리하여 연결된 디바이스로 직접 전송됩니다. 역할이 분명해졌네요.

Client: 사용자가 사용하는 Console
Server: 하드웨어와 연결된 서버

예를들면 네트워크 사용이 가능한 라즈베리파이 같은 디바이스에서 msf의 local_hwbridge를 동작시키고 공격자는 Laptop을 통해 원격으로 접근하여 작업이 가능한거죠.

How to using?

각 module의 역할은 알았으니 사용해봐야겠지요? 먼저 Server 부분부터 볼까합니다.
search 명령으로 hardware 라고 찾아보시면 쭉 나올겁니다.

서버 모듈을 사용합니다.

HAHWUL auxiliary(local_hwbridge) > use auxiliary/server/local_hwbridge normal
HAHWUL auxiliary(local_hwbridge) > show options




옵션을 보게되면.. srvhost, port 랑 URIPATH 가 있습니다. URIPATH는 누구나 쉽게 접속하는 걸 막기위한 장치이죠. 설정하고 실행하면 .. 제가 지정한 4400 포트로 서버가 동작하게 됩니다.

HAHWUL auxiliary(local_hwbridge) > set SRVPORT 4400
SRVPORT => 4400
HAHWUL auxiliary(local_hwbridge) > run
[*] Auxiliary module execution completed
[*] Using URL: http://0.0.0.0:4400/4C8gORoXE
[*] Local IP: http://192.168.0.107:4400/4C8gORoXE
[*] Server started.


자! 이제 Client 로 Server console 에 접근할 순서입니다.
Client 모듈을 읽어준 후 간단히 옵션을 보겠습니다.

HAHWUL auxiliary(local_hwbridge) > use auxiliary/client/hwbridge/connect
HAHWUL auxiliary(connect) > show options




음.. 일반적인 모듈가 크게 차이가 없네요. 주의하실건 TARGETURI 설정을 해줘야 한다는 것과 필요 시 JSON Type 으로 debug 정보를 얻고싶다면 DEBUGJSON을 켜주시면 된다는거.. 정도가 있겠네요.

또.. 열심히 세팅해줍니다. 아까 서버 정보 입력이 끝나고 run을 해주시면..

HAHWUL auxiliary(connect) > set RHOST 192.168.0.107
RHOST => 192.168.0.107
HAHWUL auxiliary(connect) > set RPORT 4400
RPORT => 4400
HAHWUL auxiliary(connect) > set TARGETURI 4C8gORoXE
TARGETURI => 4C8gORoXE
HAHWUL auxiliary(connect) > run

[*] Attempting to connect to 192.168.0.107...
[*] Sending status...
[*] Hardware bridge interface session 1 opened (127.0.0.1 -> 127.0.0.1) at 2017-02-09 23:11:14 +0900
[+] HWBridge session established
[*] Sending custom methods
[*] HW Specialty: {}  Capabilities: {"custom_methods"=>true}
[!] NOTICE:  You are about to leave the matrix.  All actions performed on this hardware bridge
[!]          could have real world consequences.  Use this module in a controlled testing
[!]          environment and with equipment you are authorized to perform testing on.
[*] Auxiliary module execution completed

Bardware Bridge interface로 연결되며 session 하나가 생깁니다.

HAHWUL auxiliary(connect) > sessions -l

Active sessions
===============

  Id  Type                   Information  Connection
  --  ----                   -----------  ----------
  1   hwbridge cmd/hardware               127.0.0.1 -> 127.0.0.1 (192.168.0.107)


접근해보시면..

HAHWUL auxiliary(connect) > sessions -i 1
[*] Starting interaction with 1...

hwbridge >

hwbridge 쉘로 넘어가졌네요. 특별한 모듈이라는 느낌보단 Meterpreter shell 쓴다고 생각하시면 이해에 좋습니다.
help를 보면..

hwbridge > help

Core Commands
=============

    Command              Description
    -------              -----------
    ?                    Help menu
    bgkill               Kills a background meterpreter script
    bglist               Lists running background scripts
    bgrun                Executes a meterpreter script as a background thread
    exit                 Terminate the hardware bridge session
    help                 Help menu
    info                 Displays information about a Post module
    irb                  Drop into irb scripting mode
    load                 Load one or more meterpreter extensions # meterpreter extensions을 불러옵니다. (특이하네요)
    load_custom_methods  Loads custom HW commands if any # Hardware 명령을 미리 만들어두고 불러옵니다. (아래 Custom Methods Command 참조)
    run                  Executes a meterpreter script or Post module # Post module 을 실행하거나 Meterpreter script 를 실행합니다.
    specialty            Hardware devices specialty # 하드웨어 디바이스의 정보를 가져옵니다.
    status               Fetch bridge status information # bridge의 정보를 가져옵니다.


Custom Methods Commands
=======================

    Command       Description
    -------       -----------
    sample_cmd    Sample HW test command #이 명령으로 요청을 주면 string 단위로 값을 보낼 수 있죠.


여러가지 명령이 있습니다. 역시 필요한 부분만 Description 작성하였습니다.

Hardware POST Mudules

개인적으로 Metasploit의 매력적인 부분 중 하는 Post 모듈이라고 생각합니다. 원하는 코드를 Shell로 옮겨 실행한다니 얼마나 좋습니까 :)
Hardware Bridge에도 사용 가능한 POST Module은 존재합니다. 일단 hwbridge를 현재 3개가 나와있습니다.

   post/hardware/automotive/getvinfo                                           normal     Get the Vehicle Information Such as the VIN from the Target Module
   post/hardware/automotive/identifymodules                                    normal     Scan CAN Bus for Diagnostic Modules
   post/hardware/automotive/malibu_overheat                                    normal     Sample Module to Flood Temp Gauge on 2006 Malibu

(말리부가??!)
아직 초장기 단계라 모듈이 많이 없지만 점차점차 많아질거라고 생각되네요.

Reference

https://groups.google.com/forum/#!msg/open-garages/Oa2WQRf0s_4/RtoaaJcBCAAJ
https://community.rapid7.com/community/transpo-security/blog/2017/02/02/exiting-the-matrix
http://opengarages.org/hwbridge/

Share: | Coffee Me:

2/08/2017

[SECURITY] System Security Questions & Answer

오늘은 toptal에서 온 "Essential System Security Interview Questions" 란 주제를 볼까합니다. 시스템 보안에 대한 인터뷰식의 질의응답입니다. (요런 방식의 글도 괜찮네요)

제 포스팅답게 직접 답을 달아볼까 합니다. 질문에 대해 한번 고민해보시는 것도 좋을 것 같네요. 질문에 대해 좋은 생각이 있으시면 댓글로 남겨주세요~

This article was written in collaboration with "Toptal".

9 Essential System Security Interview Questions

1. What is a pentest?
2. What is social engineering?
3. You find PHP queries overtly in the URL, such as /index.php=?page=userID. What would you then be looking to test?
4. You find yourself in an airport in the depths of of a foreign superpower. You’re out of mobile broadband and don’t trust the WI-FI. What do you do? Further, what are the potential threats from open WI-FIs?
5. What does it mean for a machine to have an “air gap”? Why are air gapped machines important?
An air gapped machine is simply one that cannot connect to any outside agents. From the highest level being the internet, to the lowest being an intranet or even bluetooth.
6. You’re tasked with setting up an email encryption system for certain employees of a company. What’s the first thing you should be doing to set them up? How would you distribute the keys?
7. You manage to capture email packets from a sender that are encrypted through Pretty Good Privacy (PGP). What are the most viable options to circumvent this?
8. What makes a script fully undetectable (FUD) to antivirus software? How would you go about writing a FUD script?
9. What is a “Man-in-the-Middle” attack?

https://www.toptal.com/security/interview-questions

1. What is a pentest?

pentest란 무엇일까요? 라는 질문이죠. PENETRATION-TEST 즉 침투 테스트를 의미하고 보안적인 관점에서 굉장히 좋은 대비책이라고 생각됩니다. 방어만이 전부는 아니죠. 공격을 통한 방어로 미리 예방하는 것도 매우 중요합니다.
공격자를 잘 아는건 공격자입니다 :)

2. What is social engineering?

소셜 엔지니어링이란 번역하자면 사회공학기법을 이야기합니다. 보안의 가장 큰 홀은 사람이라고 하죠.
기술적인 접근성보단 사람적인 접근으로 공격하는 방법입니다. 대표적으로 피싱이 있습니다.
작년 여름쯤에 작성했던 내용인데 참고해보시면 좋을 것 같네요. http://www.hahwul.com/2016/04/hacking-social-engineering-attack.html

3. You find PHP queries overtly in the URL, such as /index.php=?page=userID. What would you then be looking to test?

음.. 저의 웹 해킹 철학은 단순합니다. 그저 input-output 과의 관계를 보려고하겠지요 :)


4. You find yourself in an airport in the depths of of a foreign superpower. You’re out of mobile broadband and don’t trust the WI-FI. What do you do? Further, what are the potential threats from open WI-FIs?

공개 WI-FI는 굉장히 위험합니다. 일단 통신에 대해 SSL과 같이 별도의 암호화가 없는 경우에 동일 네트워크에 있는 공격자에게 내용을 도청 당할 수 있고 패킷의 흐름을 틀어 변조된 사이트를 신뢰받는 사이트로 위장시킬 수 있습니다. 여러가지 공격 루트가 존재하며, 이는 사용자를 타겟으로 한 공격 시나리오가 많을 것 같네요.

5. What does it mean for a machine to have an “air gap”? Why are air gapped machines important?

CVSS에서도 접근의 범주에 따라 취약점의 등급이 달라집니다. 그만큼 이 대상의 접근성이 어느정도인가가 중요한 것이고 분리되지 않은 네트워크에 중요한 데이터가 존재한다면 탈취 당할 가능성이 높아지게 되겠죠. 논리/물리적인 분리 모두 효과가 있는 대책이라고 봅니다.

6. You’re tasked with setting up an email encryption system for certain employees of a company. What’s the first thing you should be doing to set them up? How would you distribute the keys?

질문에 중요한 부분이 있듯이 어떻게 키를 배포하는가는 굉장히 중요합니다. 튼튼한 알고리즘은 많지만 그 키를 관리하고 전달하는 과정이 굉장히 까다롭겠지요. 만약 정말 일부 사람만 알아야하는 기밀 정보라고 할 때 저라면 키 교환 과정에 대해 물리적으로 처리할 것 같네요.
약간 Lavabit의 Paranoid Mode 같은 느낌이랄까요?
(http://www.hahwul.com/2017/01/hacking-lavabit-encrypted-email-service.html)

7. You manage to capture email packets from a sender that are encrypted through Pretty Good Privacy (PGP). What are the most viable options to circumvent this?

높은 키의 암호화가 되어있다면.. 과감히 통신의 흐름안에서 찾아보려고 할 것 같습니다. 저는 암호문이 풀리는 구간이 제일 탐나네요.
원글에서도 비슷한 뉘양스의 답변인 것 같네요.

First, one should be considering whether to even attempt circumventing the encryption directly. Decryption is nearly impossible here unless you already happen to have the private key. Without this, your computer will be spending multiple lifetimes trying to decrypt a 2048-bit key. It’s likely far easier to simply compromise an end node (i.e. the sender or receiver). This could involve phishing, exploiting the sending host to try and uncover the private key, or compromising the receiver to be able to view the emails as plain text.

8. What makes a script fully undetectable (FUD) to antivirus software? How would you go about writing a FUD script?

갑자기 FUD가 나와서 당황스럽네요.. 아마 대부분 비슷한 뉘양스로 피해가지 않을까 싶습니다. 패턴이나 통계를 이용한 탐지에는 규칙이 존재합니다. 취약점을 우회하듯이 탐지 규칙에도 헛점은 있고 이를 잘 활용한다면 쉽게 피해갈 수 있는 FUD가 되지 않을까 싶네요.
이건 보안쪽 하시는분들이 FUD Script 작성에는 유리할지도 모르겠네요 :)

9. What is a “Man-in-the-Middle” attack?

마지막으로 MITM은 공격자가 통신 포인트 사이에서 스니핑/변조하는 공격을 의미합니다. 한글로 중간자공격으로 불리죠.
https://ko.wikipedia.org/wiki/%EC%A4%91%EA%B0%84%EC%9E%90_%EA%B3%B5%EA%B2%A9

쉬운거니 패스!

Toptal collaboration

This post originally apperared in Toptal
(https://www.toptal.com/security/interview-questions)

Reference 

https://www.toptal.com/security/interview-questions
http://www.hahwul.com/2017/01/hacking-lavabit-encrypted-email-service.html
https://ko.wikipedia.org/wiki/%EC%A4%91%EA%B0%84%EC%9E%90_%EA%B3%B5%EA%B2%A9
http://www.hahwul.com/2016/04/hacking-social-engineering-attack.html
Share: | Coffee Me: