Monday, January 7, 2019

CentOS 파티션 설정

2019-01-07

CentOS 파티션 설정

  • 조건

       - 3GB HDD
       - 2GB Partition
       - ext2 Format


[ fdisk -l ]
: 디스크 리스트


[ fdisk /dev/sdb ]
: 디스크 설정


[ help 활용 가능 ]



[ n : 새로운 파티션 추가 ]


[ mkfs -f ext2 /dev/sdb1 ]
ext2로 포맷
{참고}
ext3, ext4 의 경우 다른 명령어


[mkdir /home2]
/home2 디렉토리 만들기


[ df -h ]
디스크목록


[ 참고 ]
혹시 모를 상황에 대비해 입력해줌

Sunday, January 6, 2019

CentOS 서버 구축하기

2019-01-07

CentOS 6 서버 구축


[ CentOS 6.5 ]
Install of upgrade an existing system : 기본적으로 설정
Install system with basic video driver : 위의 설정시 재부팅후 검정화면일 경우 실행


[ SKIP ]


[ 언어 및 지역 설정 ]


[ Re-initialize all ]
전에 드라이브 설정시 실패해서 전부 재설정


[ 설정 계속 ]


[ root 비밀번호 설정 ]


[ Partition Type ]
Replace existing Linux system : 지정했던 하드디스크 사용

[ Reboot ]





[ 성공 ]

Saturday, January 5, 2019

Back door Source for C++

2018-12-10

C++ 소스코드를 이용한 백도어 연결


시스템 종료 , 재시작

   

   1. API를 활용하는 방법

  • LookupPrivilegeValue / AdjustTokenPrivileges / ExitWindowsEx

       HANDLE hToken;
       TOKEN_PRIVILEGES tkp;
       // Get a token for this process
       OpenProcessToken(GetCurrentProcess(),
              Token_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
       // Get the LUID for the shutdown privilege
       LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privilege[0].Luid);
       tkp.PrivilegeCount = 1; // one privilege to set
       tkp.Privilege[0].Attributes = SE_PRIVILEGE_ENABLED;
       // Get the shutdown privilege for this process.
       AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, {PTOKEN_PRIVILEGES)NULL, 0);
       // Shut down the system and force all application to close.
       ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);

   2. 명령어를 사용하는 방법

  • 종료 : shutdown

       WinExec("shutdown -h -f -t 0", SW_HIDE);
       // cmd창 없이 바로 shutdown
     WinExec("명령",SW_HIDE")-->Show Window hide(창을 안보여줌_악성코드)<->SW_SHOW
system("명령")

  • 재시작 : reboot

       WinExec("shutdown -r -f -t 0", SW_HIDE);
       //cmd창없이 바로 재시작

  • OS 명령 실행 : cmd [명령어]

       - 명령창(cmd.exe)에서 명령어 실행
       - cmd.exe에 명령어가 내장되어 있다.
            - cmd.exe /c [명령어]
       - cmd.exe /k [명령어]
       - 프로세스 다루기
            - 프로세스 목록 출력 : plist
                - 소스코드 : 아래참고
            - 프로세스 생성(파일실행) : run [실행파일명]
                - 소스코드 : 아래참고
            - 프로세스 종료 : pkill [pid]
                - 소스코드 : 아래참고


[CLIENT]
입력해야하는 명령어와 반응에 대한 함수

[SERVER}
입력받아야하는 명령어와 그에 대한 반응
SW_HIDE : 창 안보이도록

  방화벽 해제


     방화벽은 backdoor감지


[방화벽해제 소스코드]
실행시 방화벽해제한다는 알람이 뜸
->services.msc에 들어가서 알람 중지


[ services.msc ]
끄기



[ 알림을 끌수 있음 ]
이를 이용해서 소스코드를 만들어서
파일실행시 자동으로 알림을 먼저 끄도록 소스코드 만들어보자


[ Security center과 firewall을 끄는 소스 ]
가장 먼저 실행해야하는 소스코드


 방화벽을 내리는게 아니라 악성코드를 예외로 넣음


소스코드








[ regflushfet(hkey) ]
하드에 당장 삽입하기
혹시나 하드에 입력이 안될까봐 코드에 넣어줌




cmd [명령어]

   cmd로 c:\파일목록읽기


[SERVER]



[CLIENT]







프로세스를 스냅샷을 찍어서 핸들값을 받아낸다
핸들값을 알려준다.
핸들값으로 스냅샷을 받아낸다

실행파일명, ProcessPID

DiskForensic의 예시

2018-12-28

DiskForensic의 예시

디렉토리 삭제 후 복구



[참고]
slack space 16byte씩 연결되어서 384byte가 남음 



[ 실습 ]

J\:testdir1\file1.txt(600byte)
J\:testdir1\file2.txt(9000byte)
J\:testdir1\testdir2\file3.txt(700byte)
J\:testdir1\testdir2\file4.txt(9000byte)
파일을 만들기

   1. testdir1을 삭제하고 복구


[ E5->54로 변경 ]
E5 : 삭제된 파일
54 : T의 16진수 값


[ 3클러스터에 FFFFFF0F 입력 ]
FFFFFF0F : 값이 있음


[ testdir 복구완료 ]



[ 내용도 복구 필요 ]



[ testdir 에 들어가보면 내용이 그대로 있음 ]


[ txt파일의 내용도 읽을 수 있음 ]





DISK IMAGING

  - FTK Imager(Forensic Tool Kit)

df의 하드디스크(E:)가 망가졌다는 가정, newhd에 df의 HDD를 연결하여 복구하여보기

[SAFE Block]


[ 참고 ]
25GB HDD의 Sector 값
2048    9234   [fat 12791]  22025   34816
sector per cluster 32

Friday, January 4, 2019

Disk Forensic 이란

2018-12-24

Digital Forensic(Cyber Forensic) 정의 및 소개


  •  컴퓨터관련 수사를 지원하며 디지털자료가 증거로써 증명력을 갖도록 하는 과학적이고 논리적 절차와 방법을 연구하는 활동
  •  Forensic 용여는 1991년 국제 컴퓨터수사전문가협회(IACIS)가 미국포틀랜드에서 개설한 교육과정에서 처음사용

  https://www.slideshare.net/forcom/ss-56855069


디지털 포렌식의 기본원칙

  1. 정당성의 원칙 


  • 위법 수집 증거 배제 원칙: 입수 증거가  적법절차를 거쳐 얻어져야 함

  2. 재현의 원칙


  • 피해 직전과 같은 조건에서 현장 검증을 실시하였다면 피해 당시와 동일한 결과가 도출되어야 함

  3. 신속성의 원칙 


  • 시스템의 휘발성 정보 수집 여부는 신속한 조치에 의해 결정되므로 모든 과정은 지체 없이 신속하게 진행되어야 함

  4. 연계 보관성(Chanin of Custody)의 원칙


  • 증거물 획득, 이송, 분석, 보관, 법정제출의 각 단계에서 담당자 및 책임자를 명확히 해야함

  5. 무결성의 원칙


  • 수집증거가 위, 변조 되지 않았음을 증명할 수 있어야 함, 무결성은 권한이 없는 자에 의해 증거자료가 될 데이터가 변조되거나 파괴되지 않았다는 것을 보장하는 것
  •     - 의미 : 수집당시 HDD의 Hash와 법정 제출 시 HDD의 Hash 값이 서로 일치한다면 Hash 함수의 특성에 따라 무겨성이 입증됨




증거분석 기본 원칙

  • 증거 처리에 대한 기본 원칙(증거법)이 디지털 증거에 적용될 수 있어야함
  • 디지털 증거 원본의 절대적인 보존
  • 분석도구의 신뢰성확보
  • 모든 과정의 문서화


디지털 포렌식 절차 개요

  1단계. Preparation(준비단계)
  2단계. Acquisition(:Acquisition(증거획득단계))
  3단계. Preservation(보관/ 이송단계)
  4단계. Exam/ Analysis(분석/ 검증단계)
  5단계. Reporting(조사/ 보고서)


1단계.. 준비단계

  1. 주요활동 

   1) 현장 채증 장비 준비 및 관리 : 언제나 가용할 수 있도록 주기적으로 점검
   2) 증거분석 도구 준비 및 검증: 어네나 가용할 수 있도록 주기적으로 점검
   3) 분석교육 : 팀원들에게 분석 기술 전파 교육
   4) 연구/개발: 새로운 기술 연구하고 분석도구 개발

  2. 준비사항

  • 압수수색영장
  • 관리자 협조
  • 진술서 양식
  • 자문가 연락처 : 현장에서 해결해야 하는 긴급한 기술적 절차적 난관에 봉착했을 때 도움을 받아야 함

2단계.. Acquisition(증거획득단계)

  1. 주요활동

   1) 수집대상 파악/선정
   2) 획득 과정 기록(현장 상황, 시스템 구성)
      -현장 사진 촬영 및 스케치 수행
      -컴퓨터 등 대상물의 앞, 뒷면 사진, 주변장치를 포함한 사진, 전원이 켜져 있는 경우는 모니터 화면 촬영


3단계 Preservation(보관 / 이송 단계)


  • 증거물 포장
    • 전자파 차폐 용기
    • 라벨링
  • 이송/보관
    • 반출/입 통제
    • 디스크 또는 파일 해시 값 관리
    • 적정 온도 및 습도 유지
    • 먼지 없는 곳
    • 회피 물체(자성체), X-RAY에 근접하지 않도록 관리


4단계 Exam / Analysis (분석/ 검증 단계)


  • 디스크 이미징, 복제   
    • Disk Imaging 
      • Sector -> 파일(이미지 파일)로 저장
      • 증거용   #Hash 값 중요!
    • Disk Cloning 
      • HDD -> HDD   모든 섹터의 내용을 그대로 저장
      • 분석용
  • 증거 데이터 분석/검증
    • 분석 과정 명확
    • 기록 유지
    • 재현 가능
    • 증거물 훼손 및 내용 변경 금지
    • 백업본 사용 분석
    • 다양한 기법과 Tool 사용
  • Write protector
    • HDD 연결 시
      • 휴지통 생성(파일 생성)
    • 증거물 변조됨 을 방지하기 위해


    • Write Protect 가능 도킹스테이션 사용
    • 하드와 분석용 PC 사이에  Write Protecter 장비 사용 (쓰기 신호 차단)
#S/W 적  Write Protecter 도 있다 

5단계 Reporting(보고서)


  • 분석 보고서 작성
  • 분석 내용 설명
  • 법정 증언
    • 쉽고 평이하게
    • 과정을 명확하게 기록

---------------------------------------------------------------------------------------------------

1. DiskLayout (Disk Forensic)

   1) MBR : BIOS
   2) GPT : EFI(UEFI)에서 인식하는 방식, MBR대체
***BIOS(32bit)--변화추세-->EFI(64bit)(Intel): 편의성/마우스/그래픽 지원, 하드웨어인식기능향상//.BIOS:MBR만 인식 EFI :MBR지원 , GPT방식지원
   3) Disk Label (Sparc(hw이름) - Solaris(os))

 1) MBR(Master Boot Record)

  • Boot Strap Code


    • HDD로 부팅할 때 가장 먼저 실행되는 코드
      • 운영체제 부팅에 필요한 내용이 들어있는 파티션(Boot Flag=0x80)을 찾는다.
      • 부트 파티션의 PBR에서 BootStrapCode를 찾아 실행시킨다.
    •  MBR BootStrapCode 복구 하기
      • 윈도우 설치 CD로 부팅한다.
      • 복구 콘솔로 들어간다.
      • fixmbr 을 실행시켜 bootstrapcode를 복구 시킨다.
      • 단, 파티션 테이블은 복구할 수 없다.(수동으로 복구해야 함.)


  • Magic Signature


    • MBR(EBR) 이나 PBR이 손상되었는지를 확인할 때 사용하는 값
    • 섹터의 마지막 2바이트 부분에 0xAA55라고 써있음 (섹터편집기에서는 55AA 라고 적어라)
    • 0xAA55 가 아닌 다른 값이 적혀 있으면 손상된 것으로 간주하고 MBR/EBR/PBR을 무시한다. (즉, 파티션이 인식되지 않는다.)


  • Partition Table


    • 하드디스크의 파티션 정보 수록
      • 파티션의 부팅가능 여부(부팅가능/부팅불가)
        • 0x80 --> Boot Partition
        • 0x00 --> Non Boot Partition
      • 파티션의 시작주소(CHS) / 파티션의 끝주소(CHS)





      • 파티션의 시작주소(LBA - 섹터번호) / 파티션의 크기(LBA - 섹터 수)





      • 파티션의 파일 시스템 종류(FAT/NTFS ..)




  FAT(FAT12)->FAT16->FAT32->exFAT

        • partition type list (google.com)



    • 주 파티션(= Primary Partition)
      • MBR의 파티션 테이블에 기록된다.
      • 당연히 4개만 만들 수 있다.



    • 확장 파티션(Extended Partition)



      • 진짜 파티션이 아니다.
      • MBR의 파티션 테이블에 엔트리가 4개 밖에 없기때문에 다른 곳에 파티션 테이블을 추가로 확보하는 개념이다.
      • MBR의 파티션 테이블에 기록된다.




[ 디스크 관리 ]


[ cmd에서 디스크의 파티션 추가가능 ]


    • 논리 드라이브(Logical Drive)
      • EBR(Extended MBR)의 파티션 테이블에 기록된 파티션이다.


# 포맷 ; 파티션(volume)에 파일시스템 생성

PBR(partition Boot Record)=VBR(Volume Boot Record)=BR(Boot Record)

Anti Disk Forensic

  • zero fill-00값을 모든 섹터에 기록
  • degaussing-재사용이 불가능
  • low level format -sector, track을 다시 그리는 작업 (의미 x)
  • high level format -시스템에 따라 파일 목록, directory 목록만 삭제 ,내용은 복구가능
->데이터복구기술에 대응

데이터복구 

1)Software : zerofill은 재생불가능
2)Hardware : zerofill 재생가능

Putty로 연결된 포트번호 뽑는 함수

2018-12-21

악성코드 분석

  TimeLine Analysis : 시간의 흐름에 따라 진행되는 방향

   첫째, 분석된 파일인지 확인 (Virustotal)

  • solaris-SunOS, AIX
  • HexaView : MBR확인(hdd)
  (C#)KEY : HireKey>SubKey>Value-ValueName, ValueType, ValueDate

  • /**PuTTy를 읽어오기

    • 푸티는 이런 주소로 데이터를 저장

[ 레지스트리 편집기 ]

    • C code를 수정하면서 증명

[ RegSetValue의 주소를 사용해 레지스트리키 열기 ]
RegCreateKeyEx 함수


    •  디버깅

[ 레지스트리키를 통해 Hostname을 잘 읽어옴]




[연결된 포트번호 읽어오는 함수 추가 ]
RegQueryValueEx



성공



레지스트리 편집기에서 확인해보니
156.20.1.10 과 연결된 포트넘버는 22가 맞음

List

MobSF

MobSF는 오픈소스 모바일 앱 자동 보안 진단 프레임워크로 자동 분석 시스템 구축할 때 사용한다. 정정 및 동적 분석이 가능하며, Android, iOS, Windows에 대해 침투 테스트, 멀웨어 분석 및 보안 평가를 할 수 있다. 참고자료 필...