2017-02-26

Hashcat을 이용해서 MYSQL 암호 알아내기



  현대를 살아가다 보면, 생각보다 기억의 불확실성을 경험할 경우가 많다.
인간의 기억은 완전하지 않아서, 뇌에 기록되는 단계에서 재정립 된다. 그리고 시간이 지나면 덮여 쓰여지거나,  망각 된다.

세상의 모든 것들이  정확히 디지털화되어 기록되어지는 세상이다 보니, 본의 아니게 내 기억의 불확실성을 자주 깨닫는다.

수많은 인터넷 계정이나, 내 가 관리하는 시스템의 계정암호를 잃어 버리는 경우도 ,비약하지면 하나의 예가 될 수도 있을 것이다.
  • Mysql 암호 알아내기
  • Hash값으로 암호 알아내기

위의 두가지 문구를 들었지만, 모든 현대 암호체계는 이 Hash 알고리즘을 기반으로 하여 구축된다.

Hash란?  자료구조의 한 종류로서, 주로  hash 함수에 의하여 생성된 유일한 값을 의미한다.
학문적으로 들어가면 몇가지 규칙(약 충돌 회피성, 강 충돌 회피성 등..)을 지키며 중복값을 허용하지 않는 난수 생성기에 가깝다.

여튼 A를 입력으로 받아 B라는 해시값을 얻었다면
A이외의 값으로슨 B가 발생하여서는 안되며, B라는 결과값으로A를 유추할수 있어서도 안되다는게 핵심이다.

따라서, 밑에서 언급 하겠지만,  보통 전수검사(Brute force)로 모든 입력값을 입력하여 비교하는 방법밖에는 없다.



본론으로 돌아가서, 여러가지 역해시 프로그램을 사용해 보았지만, hashcat 만큼 성능이 좋았고 기능이 많은 프로그램이 없었기에 소개해본다, ( 단, 처음 사용자 혹은 IT 미숙련자등은 좀 어려울수도 있다)


1. 먼저 Hashcat을 다운 받는다.
 다운로드 위치는 (여기를 클릭) 이다,  다운받은후 압축을 풀어 적당한 위치에 저장한다.
 무료이며, 설치가 따로 필요 없고 여러 플랫폼에서 동작한다.


2. 우선 mysql에서 사용자 계정을 저장하는 column에서 hash 값을 가져온다.
(예를 들면 mysql5.1 에서 passwd()함수를 사용해 암호를 저장하면  다음과 같은 형태로 만들어진다.)

*23AE809DDACAF96AF0FD78ED04B6A265E05AA257
가져온 파일을 적당한 위치에  만든 temp.txt 파일에 저장한다.
저장할때 해시값 앞의 *표는 때어준다.


3. 가져온 해시값의 알고리듬 종료를 알아낸다.
 이부분은 발생한 해시 값만으로는 알수 없다. 따라서 Hashcat에서 제공하는 알고리즘 종료를 보고 선택 해야 한다.
 Hashcat의 실행 파일에 --help 옵션을 주고 실행한후 중간즘을 보면


   .......................
1731 | MSSQL(2014)                                      | Database Server
    200 | MySQL323                                         | Database Server
    300 | MySQL4.1/MySQL5                                  | Database Server
   3100 | Oracle H: Type (Oracle 7+)                       | Database Server
    112 | Oracle S: Type (Oracle 11+)                      | Database Server
  12300 | Oracle T: Type (Oracle 12+)                      | Database Server
   8000 | Sybase ASE                                       | Database Server
............................

위와 같이 해당 프로그램의 해시값 타입을 알수 있다 여기서는  mysql5.1 이므로 300이 해당된다,



4.  Windors key + r을 입력후 실행창에서 cmd를 입력하여 커맨드 입력창을 연후, 다음 명령을 실행 시키다. 자세한 옵션은 추후 설명하도록 한다.

hashcat64.exe --force -m 300 c:\temp.txt -a 3 -w 2 -1 ?a --increment --increment-min=1


5. 위 4번  명령의 실행 결과로 일단 간단한 암호를 사용했다면, 거의 바로 결과를 받을수 있다.


temp 파일에 저장한  해시값의 암호값은 123으로 확인된다.
정말 몇초도 안되어 나온다.
그리고, 이것이  암호를 길고 어렵게 만들어야만 하는 가장 중요한 이유이다.
일반 피시에서 동작 시켜도 9자리 패스워드는 하루만에 알아 낼수 있다.
한자리 암호가 늘어 날떄마다 길어지며 15자리쯤 되면 .. 수천년 걸린다. 남는 시간도 화면에 표시된다. 

간혹, 포털 사이트나 국공립 기관에서 암호나 개인정보가 유출되었지만, 암호화되어 있어서 문제 없다라고 말하는것은 한마디로  "헛소리"이다.  어지간하면 바로 알아 낼수 있고, 따라서 
사용자는 무조건 암호를 길게 가져가야 한다. 기관이나 포털을 믿지는 말고 대처하자.



6. 사설이 길었지만 추가 사항은  Hashcat 홈페이지에 가면 잘 나와있지만 사용한 옵션에 대해서만 간략히 설명하면 다음과 같다.


  • -m 300  : 위에서도 언급 했지만 해시함수의 종류로 mysql5.1은 300을 사용한다.
  • c:\temp.txt : 꼭txt 파일이 아니어도 되며 하나의 파일에 여러개의 해시값을 넣어도 된다
                복수개 입력시 모든 해시값을 찾아낼때까지 계속 실행된다.
  • -a 3 : 동작 모드를 나타낸다. 3번은 전수 검사로 모든 가능한 입력값에 대해서 하나한 검사한다. 추가로 wordlist로 검사하는 항목도 있는데 wordlist란 말그대로 임의의 입력값을 사전의 형태처럼 모아논 값이다. wordlist는 이곳저곳에서 무료로 다운 받을수 있고 , 사용자가 많이 사용할 법한 단어들로 이루어져 효율성이 높지만, 기껏 시간을 들였으나 그 woirdlist에 해당하는 문자열이 없는경우는 찾아낼수 없다.
  • -w 2  : Hashcat에게 얼마나 열심히 일을 시킬것이냐를 나타낸다.  보통 강하게 돌릴경우 3을 지정한다.
  • -1 ?a  : 는 Hahcat --help 옵션을 보면 나오지만, 전수검사를 할때 넣을 입력값을 나타내며 ?a는 모든 대문자,소문자,숫자,특수문자,공백을 포함한 입력값을 나타낸다.
  • --increment --increment-min=1 ㅣ 해시값의 원문의 자리수가 1자리 이상일 겨우 사용하며 8자리가 넘는다는 확신이 있으면 8부터 사용하면 된다.


2017-02-23

FreeSSHD구성하기


오랜동안 컴퓨터 관련일을 하다보면 다양한  운영체제를 사용해 보게 되는데,
윈도우 운영체제를 기업의 관리자 입장에서 사용하다보면 불편한 점이 있다.
다양한 이종운영체제를 운용하고 있을 경우 , 리눅스의 경우 대표적인 SSH를 사용하여 통합 관리가 비교적 편하지만, 윈도우에서는 WinRM이나, powersehll 이나 별도의 소프트웨어를 설치 사용해야 한다.


  고가의 프로그램을 구입할 여력이 없거나, 간단한 작업만을 수행할 경우에는 "FreeSSHD"  프로그램을 사용해 보자. 무료 프로그램이며 간단히 사용할수 있다.

"WinSSHD" 라는 프로그램도 있다.
다만 개인사용자에게만 무료이다.



먼저  다음 사이트에서 (www.freesshd.com)에서 최신 버전을 다운받는다.


  1. 설치본을 그냥 기본설정에 따라 설치한다.
    윈도우에서는 설치시 22번 포트가 ssh를 위해 열려 있지 않다.
    freesshd를 실행하면, 화면 오른쪽 밑에 트레이 아이콘으로 표시되며,
    이 아이콘을 클릭하면 UI 를 확인할수 있다.
  2. UI의 "Serverstatus"탭을 보면 두번째줄에 SSH 가 기동하지 않은것을 확인 할수 있다.


  3. 먼저 SSH를 사용할수 있는 사용자 계정을 먼저 추가한다.
    윈도우는 대부분의 현업에서 관리자 계정을 사용할 것이므로
    "User"탭으로 이동하여" administrator를 입력하고 ,
     - 인증 방식을 "NT 인증방식" 으로 지정한다.
     - 또, ssh를 사용할 경우는 "shell"에 체크 한다.



  4.  UI의 "SSH" 탭으로 이동하여 실제로 SSH 서버에 대한 설정을 해줘야만 한다.
    기본 설정을 모두 사용해도 문제 없으며 방화벽으로 인해 22번 SSH 기본 포트가 닫혀있는 경우는 20022등 10000~60000번 사이에서 원하는 미사용 포트 번호를 입력하면 된다,



    추가로 눈여겨 볼만한 옵션으로는
    - Max nu,mber of connection : 최대 연결 사용자수
    - Idle timeout : 미입력시 로그아웃 시간 (0은 무한대기 )
    - Command shell : 명령을 실행할 프로그램, 기본적으로 윈도우의 cmd가 연결된다.
     - Start SSH server on freeSSHD startup : 프로그램 기동시 SSH서버를 실행한다.
      ( 이 옵션은 SSH 서비스의 자동시작을 의미하지 않는다.)
  5. Windows key+ R 을 누른후, 실행창에 services.msc 를 입력하여,
    윈도우 서비스 관리창을 연후 freeSSHD를 자동시작으로 변경해준다.





  • 장점
    - 무료이며, 앞으로도 무료일 것이다.
    - 기본 사용법이 쉽다.
    - 다른 FTP 등의 기능도 동시에 제공한다.
  • 단점
     - 의외로 프로그램 동작이 무겁다.
     - 업데이트가 생각보다 빠르지 않다.
     - 버그가 많다 ( 동작중 잘 종료한다 )
     - SSH 로그인시  콘솔창의 크기가 윈도우에 연동된 command shell 프로그램에 종속된다
       즉,  화면이 작게 보인다.
     - 화면이 스크롤할떄 간혹 깨지는 경우가 있다.
      하지만 동작엔 문제가 없다.


* 마지막으로 FreeSSHD 를 설치하고 사용하다보면 잘 동작 안하는 경우가 있꺼나, UI지시 내용과 동작상황이 틀린경우가 있는데 윈도우에서 여러번 실행하면 freeSSHD 인스턴스가 중복 실행된다. 따라서 마지막 UI에서는 포트가 중복 오픈이 실패하여  동작하지 않는것처럼 보일수 있다. 트레이 아이콘에서 여러개 실행되었으면 지워주면 된다.






2017-02-21

Debugview를 사용하여 원격 커널 로그 보기


원격호스트의 커널로그를 보기 위해서는  다음과 같은 방법이 있다.
  1. Windbg 를 사용하여 커널 디버깅 설정
  2. Debugview를  원격 로그 설정
1번의 Windbg를 통해 디버깅을 하면 브레이트 포인트/로컬 변수확인 등 여러가지가 가능하지만 무겁고 설정또한 쉽지 않다. (Windbg를 통한 디버깅 바로가기)

따라서 로그만을 확인할 경우는 Debugview를 사용하여 원격 호스트의 로그만을 확인하는 것이 좋다.

Debugview는 서버- 에이전트 방식으로 뷰어에 원격지 로그 정보를 제공한다.
  1. 우선 debugview를 다운 받는다.(바로가기)
  2.  다운받은 debugview를 로그를 확인할 호스트와, 디버깅할 호스트에 각각 설치한다.
  3. 디버깅할 호스트에서 cmd 창을 열어 ,다음 명령을 실행한다.
    (windows key+r 입력후 cmd를 입력한후 엔터를 치면 cmd창이 실행된다)

    dbgview /a /k /v
    * 각 옵션은 agent 모드 실행,  커널로그 캡처, 상세로그출력이며 상세한 사항은 다음과 같다.


    명령이 정상 실행 되면 조그만 debugview 창이 뜨면서 접속을 대기한다는 메세지가 나온다, 창을 출력하고 싶지 않을경우 /t 옵션을 추가 하면 된다.
  4. 로그를 출력할 호스트에서 dbgview를 더블 클릭하여 실행한다.
    프로그램 화면의 메뉴에서 COMPUTER> CONNECT를 선택한후,  호스트의 호스트 이름 혹은 IP를 입력한다. 
  5. 로그를 출력할 호스트의  화면에서는 메뉴의 CAPTURE>CAPTURE KERNEL이 꺼져 있으므로 켜준다.

     위 과정을  완료하면  커널 로그가 출력된다.
     하지만 windbg보다 빠를 뿐, 만족할 만한 속도가 나오지 않는다.

애매한 사용성이지만  누구가 쉽게 접근하여 설정/사용이 가능하다는 장점이 있다.



2017-02-13

모리에토 -- 리듬 --

모리에토  -- 리듬 --

 : 6.5



작가의 데뷰작이다.  작가는 청소년 소설로 데뷰를 했다.  일본의 소설을 보면  일반 문학의 경우, 일본인 특유의 느슨하고 느리며, 그런 일상에 대한 세밀하고 풍부한 표현이 인상적인데 ,  청소년 문학쪽으로 내려 갈수록 먼가 교육적이나, 청춘의 아름다움을 강조하려는 경향이 뚜렷하다.

성인이 일상의 나름함과 느림 그리고 자유스러움의 표현에서 휴식을 가진다면, 청소년또한 마찬가지가 아닐까 , 왜 굳이 청소년 문학과 일반 문학을 나누는가?!

100년 전만 해도 5세면 일을 하러 나가던 시대 였다. 그리고 아무도 인류역사에서 그 러한 시기가 그렇지 않았던 시기보다 수만배는 길었을 것이다.

재미있게 읽은 소설인데 특유의 "청소년을 위한" 다는 느낌만 없었다면 더 좋았을것 같다.
모리에토의 리듬은,  자신의 길을 찾아 나가는 동네 오빠 "신지" 를 통해, 아이에서 성인으로 독립해 나가는 청소년들의 모습을 담고 있다.

사족이지만, 소설에서 신지는 신주쿠에서 기타 치며 합숙생활을 하며 꿈을 쫒는것으로 나오는데 , 우리 나라 청소년 문학에서는 그렁 행태를 모범으로 보여주지 않기 떄문에 잘 볼수 없는 인물의 종결 형태다.

청소년 소설이지만, 중반까지 일본문학의 무심한듯하면서 세밀한 표현을 잘 보여주는 작품이다.


Windows10 Administrator 관리자 계정 활성화후 메인 계정으로 사용하기


Windows 7,8,10 의 home, pro, ent 에서 사용가능

1. 관리자 계정 활성화

  1. 관리자 계정으로 command prompt (cmd)실행
  2. cmd창에서 "net user administrator /active:yes" 를 입력후 엔터
  3. 현재 로그인 사용자에서 로그아웃해서 나가면 administrator 계정으로 초기 패스워드 없이 로그인 가능
  4. 제어판 "사용자 관리"에서 기존 사용자 계정을 삭제한다.
  5. 제어판 "사용자 관리"에서 administrator 계정의 패스워드를 추가한다.

1. 관리자 계정 앱실행 제한 풀기

  1. Window + R 입력후 regedit 를 입력하여 레지스트리 수정창을 연다.
  2. 레지스트리 키 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"  폴더를 찾는다.
  3. 해당 레지스트리 폴더에 "FilterAdministratorToken" 가 없으면 (DWORD value)로 추가 하고 있으면 값을 "1"로 설정한다.
  4. 레지스트리  키 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\UIPI\" 폴더를 찾아 이동한다.
  5. Default  레지스트리 키에  "0x00000001(1)"를 입력한다 
  6. 윈도우즈 리부팅후  정상 적으로 사용한다.

2017-01-05

M3D Micro 최초 출력물 성공기 (초소형 3d 프린터)

M3D Micro 프린터를 사용한 첫 출력물

약 80x80x50mm 정도의 중규모 부품을 찍는데 
밀도를 최고로 통일 했을 경우, 
200마이크론 공정으로는 3시간 50분, 50 마이크론 공정으로는 9시간 50분이 걸렸다.

이정도 규모에 이 시간은 너무 하지 않은가! 
워킹 타임이 너무 길어 프린터 자체가 과열되거나(스텝모터 근처가 따뜻해 지긴한다)
노즐 과열 걱정이 될 정도다.

때문에 프린팅 도중에 장시간 자리를 비우기는 어려웠다.
따라서 상당히 심신이 피곤해 진다.


일단 완성된 .. (그럭저럭 만족한..)  출력 물의 형태는 다음 그림이다.



 1. 왼쪽위 : 200마이크론 공정이든, 50 마이크론 공정이등 반지름 1mm의 구멍이 정상적인 구 형태로 만들어 지지 않았다.
2. 중간 아래 : 서포터부분 으로 만들어 지긴했지만 잘 분리가 안되 었다.
3. 오른쪽 중간 : 표면과 내부 조직간에 빈틈이 생긴다. 공정단위에 상관없이 생겼다..



일단 여기서 만족했다.. M3D는 소프트웨어의 기능이 빈약해서, 중첩등의 기능을 제공하지 않는다. 따라서 포기!

여러가지 기능을 사요하려면 G-code를 직접 수정 해야 하는데 
이건 다시 별도의 이야기가 되며, 나중에 경헙할 기회가 되면 추가 언급 하겠다.

또한 히팅 베드가 없으므로 , 빈 창고 사무실 (대기온도 2~4도)에서 출력시 엄청난 수축을 경험 할수 있다. 

수축현상 으로인해  휜 40mm 봉의 각도가 최종 24% 정도 휘어 졌다.
수축을 줄이려면 히팅베드 온도를 맞춰주던지 실내 온도를 적당히 높여주던지 해야하는데 
프린터에는 해당 기능이 없으므로,  베드 접착제를 비교한 블로그를 참조해서(출처),

프린터를 진행했다.
종이나라 딱풀을 베이스로 깔고, 만능본드를 모서리 부분에만 점찍는 형태로 묻혀주고
필라멘트 노증 온도를 약 10도 가량 올려주었다. 

대기 온도가 4도일 경우 평균인 18도에 맞춰주기 위해 노즐온도를 약 14도 증가 시켰다.


일단, 접착제성능은 좋았다. 만능본드만 사용할 경우 100% 휨현상이 발생하지 않았다. 다만 , 베드가 까질 정도로 문질러 주거나 , 뜨거운물에 담가 긁어주어야 하기 때문에 베드가 상활 우려가 있다.



출력이 완료되어 베드에서 떼어내면 다음과 같은 형태로 결과물을 확인 할수 있다.
목표 결과물 + 서포터 + raft + brim 정도의 구성이 보인다.


  1. 서포터는 상위 부분 출력을 위하여 공백을 지탱해줄 부분을 구성하는 것을 말한다.
  2. raft+brim 출력물의 바닥에 잘 접착/고정하고 쉽게 분리해 낼수 있도록 하는 것으로 위에서는 바닥에 낭비된 두꺼운 결과물을 말한다. 또한 이게 꽤 많은 필라멘트를 낭비 해준다.



최초 완성품을 찍기 위해 낭비된 필라멘드틀. ㅠ.ㅠ

2017-01-03

M3D MICRO 3D 프린터 개봉기 (초소형 3d 프린터)


우연히 3D 프린터가 손에 들어오게 되어서 소개 한다.
제품은 2014년도 정도에 킥스타터를 통해 자금을 모아 만들어진 M3D Micro 3D 프린터로 2016년말에야 만져보게 되었다 

일단 제품이 스펙을 간단히 하면 다음과 같다.

출력품질 : 50~ 1350 마이크론까지 출력 조절이 가능하다
출력규모 : 109x113x74mm 이며, 특이하게 위로 상층부에서는 91x84x116mm까지 가능하다.
본체크기 : 18.5cm 의 정육면체이다.
소음       : 최대 66dB
가격       : 조사해 보면 약 300,000정도 인듯하다.

일단 먼저 정리 하자면 
위의 출력 규모는 맞는 말이긴 하지만 다소 안맞기도 하다.
 M3D쪽 자료를 보면 다음과 같은 부피까지  출력이 가능하다

출처:printm3d.com



일단 적층형(FDM:fused deposition modelling) 3d 프린터의 특성상 raft를 생성후 그위에 조형물을 레이어별로 쌓아 구조물을 만드는데 
raft(서포트의 일종)의 크기가 사방 1cm정도를 잡아 먹어 실제로는, 한반무에서 80mm 정도만이 가능해진다..

한마디로 너무 작다.. raft를 사용 안할수도 있지만  M3D micro 라는 제품의 특성상 프린트 베드가 가열하지 않는( 이른바 히트베드)가 아니라서, 노즐이 적출한 필라멘트 용액이 굳으면서 심하게 수축이 발생 한다. 

아마도 처음 사용한다면 거의 100이면 100 실패 할 것으로 예상된다..
처음부터 잘 뽑혔다는 사람들도 보였지만 다른 비싼 제품이거나 혹은 정말 운이 좋다거나, 적당한 온습도였을 가능성이 크다.

특히 PLA보다 재료의 특성한 ABS가 수축이 심하므로 아마도. 대응ㄷ책이 없을 경우 가슴이 꽤나 쓰릴 것으로 예상된다.



일단 처음 받았을때 패키지도 작다.
약 350x350x350mm정도 이 포장에서 외부 포장지와 내부 상자를 제거하면 
에어백에 담긴 본체가 나타난다. 과연 작다..
한손바닥에 잡힐 정도....이다.



구성품은 단출히 본체+ USB 데이터 연결선 + 전원 어댑터 로 간단하다.


M3D는 필라멘트를 3DInk 라고 명명하고 부른다.
프린터의 스펙상 free filament라고 하지만 , 설명서를 보면 다른 1.75mm 필라멘트 사용시 문제가 자주 발생하고 이에 대한 책임은 지지 않는다고 되어있다..
일단은 정품이 왔다. 



본체 상자와 필라멘트들..




최초 본체의 모습으로 고정 테이핑이 되어 있다..



다 제거하면 중간에 압출기(익스트루더)가 있는데, 보니 약간 틈새가 벌려져 있다.
물어보니 동작에는 문제가 없는거라고 한다.

고정 테이핑을 제거한 모습!! 사이즈는 책상위 거치도 적합하지만, 
역시나 회사 사무실에 놓기는 소음이 심하다.
다른 개방형 3d프린터 보다 조용하다고는 하지만
한참 작동중일때의 소음은 딱! 사무실의 팬 고장난 데스크탑 정도로 시끄럽지는 않지만 은근히 신경쓰인다.



이상은 개봉기는 마친다..
일단 작고! 상대적으로 조용해서 입문용으로는 좋다고 하고 동의한다.