Thursday, January 21, 2016

Missing keyutils.h

fatal error: keyutils.h: No such file or directory

--> apt-get install libkeyutils-dev

Wednesday, January 20, 2016

Set Ubuntu Desktop to use 2-factor authentication with RSA SecurID and LDAP

Prerequisite:
Ubuntu Version: 15.10
RSA SecurID
LDAP

Few weeks ago, I needed to make an ubuntu desktop for one of isolated network. This desktop is only for using to connect servers in IDC, this desktop is free from office job, eventually it is decided to deploy ubuntu desktops to use as "Thin" desktops.

Here are preconditions.
- Use 2 factor authentication.  
- Do not use USB storage: this desktop will connect directly to servers in IDC.
    . This precondition is solved by monitoring process using Splunk.

Let's talk about how to set as 2-factor authentication.

At the first time, I tried to use and follow as google said.
Unfortunately, it did not work and I decided to find workaround.
I edited "common-auth", it causes all users who try to connect, including remote access like SSH, it authenticates using 2 factor. 

Here are what I did.

1. Install libpam-radius-auth package


apt-get install libpam-radius-auth
/etc/pam_radius_auth.conf


2. Make files to be used instructions.


 echo "#!/bin/sh" > /usr/local/bin/notify-login
 echo "echo \"Enter Passcode\"" >> /usr/local/bin/notify-login
 echo "#!/bin/sh" > /usr/local/bin/notify-login-correct
 echo "echo \"Enter AD Password\"" >> /usr/local/bin/notify-login-correct
 echo "#!/bin/sh" > /usr/local/bin/notify-login-wrong
 echo "echo \"Wrong OTP Token\"" >> /usr/local/bin/notify-login-wrong
 chmod +x /usr/local/bin/notify-login /usr/local/bin/notify-login-correct /usr/local/bin/notify-login-wrong

3. Install and edit ldap files

 ################################################
 # Adding LDAP Auth configuration    #
 ################################################
 apt-get -y install ldap-auth-client nscd
 sed -i "s/\#bind_policy hard/bind_policy soft/g" /etc/ldap.conf
 sed -i 's/LOGIN_TIMEOUT\t\t60/LOGIN_TIMEOUT\t\t180/g' /etc/login.defs
 sed -i 's/^#pam_login_attribute sAMAccountName/pam_login_attribute sAMAccountName/g' /etc/ldap.conf
 sed -i 's/base dc=example,dc=net/base dc=EXAMPLE,dc=CORP/g' /etc/ldap.conf
 sed -i 's/^uri ldapi:\/\/\//uri ldap:\/\/SERVER1 ldap:\/\/SERVER2/g' /etc/ldap.conf
 sed -i 's/^rootbinddn cn=manager,dc=example,dc=net/binddn ACCOUNT\nbindpw PASSWORD\nrootbinddn account/g' /etc/ldap.conf
 chmod 644 /etc/ldap.conf
 sed -i 's/ use_first_pass//g' /etc/pam.d/common-auth

4. Edit /etc/pam.d/common-auth.

 ################################################
 # Configure PAM file to use RSA Auth    #
 ################################################
- it is one comman line.
 sed -i 's/auth\t\[success=2 default=ignore\]\tpam_unix.so nullok_secure/auth\toptional\tpam_exec.so\tstdout\t\/usr\/local\/bin\/notify-login\nauth\t\optional\tpam_unix.so\nauth\t\[success=2 default=ignore\]\tpam_radius_auth.so\nauth\toptional\tpam_exec.so\tstdout\t\/usr\/local\/bin\/notify-login-wrong\nauth\trequisite\tpam_deny.so\nauth\toptional\tpam_exec.so\tstdout\t\/usr\/local\/bin\/notify-login-correct/g' /etc/pam.d/common-auth

## Edited common-auth file:
auth optional pam_exec.so stdout /usr/local/bin/notify-login
auth optional pam_unix.so
auth [success=2 default=ignore] pam_radius_auth.so
auth optional pam_exec.so stdout /usr/local/bin/notify-login-wrong
auth requisite pam_deny.so
auth optional pam_exec.so stdout /usr/local/bin/notify-login-correct
auth [success=1 default=ignore] pam_ldap.so use_first_pass
# here's the fallback if no module succeeds
auth requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth required pam_permit.so


5. Disable guest account for lightdm.

 ################################################
 # Disable Guest session    #
 ################################################
 echo "[SeatDefaults]" > /etc/lightdm/lightdm.conf
 echo "allow-guest=false" >> /etc/lightdm/lightdm.conf

6. Installing SplunkForwarder

 ################################################
 # Installing SplunkForwarder                   #
 ################################################
 apt-get install sshpass
 sshpass -p "PASSWORD" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r ubunter@FILESERVER:/home/sftp/ubunter/splunkforwarder-6.3.1-linux-2.6-amd64.deb ./
 dpkg -i ./splunkforwarder-6.3.1-linux-2.6-amd64.deb
 /opt/splunkforwarder/bin/splunk start --answer-yes --no-prompt --accept-license
 /opt/splunkforwarder/bin/splunk edit user admin -password "PASSWORD" -auth admin:changeme
 /opt/splunkforwarder/bin/splunk add forward-server SPLUNK:PORT
 /opt/splunkforwarder/bin/splunk set deploy-poll SPLUNK:PORT
 /opt/splunkforwarder/bin/splunk enable deploy-client
 /opt/splunkforwarder/bin/splunk add monitor /var/log/ -index idxsyslog -sourcetype linuxlog -hostname $IPAddress
 echo "bind Splunk to localhost only" >> /opt/splunkforwarder/etc/splunk-launch.conf
 echo "SPLUNK_BINDIP=127.0.0.1" >> /opt/splunkforwarder/etc/splunk-launch.conf
 /opt/splunkforwarder/bin/splunk enable boot-start
 /opt/splunkforwarder/bin/splunk restart
 chmod o+r /etc/pam_radius_auth.conf

After editing common-path, it works well. :D

Wednesday, September 19, 2012

[WAVE2012] Network 1

9/7~ 9/8일 양일간 안랩에서 주최하는 보안대회가 열렸습니다. WAVE입니다. 대회에 등록만 해두고, 문제 캡쳐와 pcap 화일만 받아뒀다가 이제야 풀어봤네요..

우선 이 Write-Up에 대한 참고사항 알려드립니다.

1. 문제 1번에 대한 스포일러 있습니다.
2. 답이 맞는지는 확인이 안되서... 그냥 이게 답이라고 믿고 싶네요..

그럼 Write-up 올립니다.

문제는 다음과 같습니다.


문제 패킷은 l.pcap(md5:709fcf180f0540b93cb6124305a45104)입니다.
패킷의 정보는 다음과 같습니다.






Hierarchy등 패킷을 살피다 보면... 총 3개의 컨버세이션이 있습니다.
dns 넘기고, 다른 bing 넘기면 남는건 10.20.30.40입니다.

디스플레이 필터를 걸어 다시 확인 합니다.

그러면 꽤나 주기적으로 패킷이 발생함이 보입니다. 30분 마다 한번씩 루틴한 패킷입니다.
그러면 1시간 마다 발생한다는 문제의 이벤트에 부합한다고 판단됩니다.

그래서 이 패킷중 하나의 스트림을 보면..
이렇습니다... 저 reverse와 gnp에서 눈치 챘으면 좀더 빨리 끝났겠지만, 그러질 못하여 10분 가까이 허비한듯...
암튼 스트림은 요청과 그에따른 png 파일 전송 입니다. 다만 png 화일을 reverse해서 보냅니다. 이를 카빙 한 후 다시 png 파일로 엮어 주면... 아래와 같은 QR코드가 보입니다.
위의 qr 코드를 따라가면... 유투브로 연결 되고...
그 유투브는 바로...드라마 유령 2부 입니다. 여기서 멘붕...
아..잘못된 타겟 설정이었나... 란 찰나... 왜 01m07s일까... 생각해 봤습니다.
바로 유투브의 1분 7초 부분에 힌트가 있더군요...
바로 스테가노 그라피입니다...

그래서 OpenStego를 사용하여 01m07s.png 화일을 decrypt하니 key.txt가 생성됩니다.

이게 마지막 키가 아닐까 생각됩니다.

답은 md5를 요구하였으므로...
이상입니다.



Wednesday, August 29, 2012

[네트워크포렌직]Forensic Contest 05

네트워크 포렌직에 관심을 갖고 공부하던 중 재밌는 곳을 발견해서 문제를 풀고 있는 중입니다.

오늘 포스팅할 문제는 해당 사이트의 5번 문제로 아래의 링크에 있습니다.


Pcap 화일도 같은 페이지에서 받으면 되고, 세부 다른 문제는 여차저차 쉽게 풀수 있으니, 제가 애먹은 exe화일을 뽑아내는 파일 카빙 방법을 블로깅 합니다.

앞서 다른 문제들을 풀다가 아래와 같은 exe 화일이 있음을 확인 하고 난 후라, 쉽게 해당 tcp 스트림은 찾을 수 있었습니다.


옆의 패킷에서 보면 file.exe가 있고 그 밑에 보면 MZ로 시작하는 부분이 보입니다. 그 부분부터 exe화일의 바이너리가 시작됩니다.
(참고할 건, Attacker가 해당 화일을 2번 전송합니다)

그래서 다시 한번 필터링을 합니다. 이번에는 tshark으로 다른 화일로 떨굽니다.

tshark -r infected.pcap -R "tcp.stream eq 5 and ip.src==59.53.91.102" -w infected_filtered.pcap

이제는 떨궈진 필터 화일로 작업을 진행 합니다.

떨궈진 패킷은, 일단 해보시면 알겠지만, tcp와 http가 섞여 있습니다. 더군다나 tcp retransmission 패킷도 껴있습니다. 덕분에 나중 작업 시 겹치는 부분을 지워줘야하죠.
그래서 우선 저는 이런 방법을 썼습니다.

tshark -r infected_filtered.pcap -Tfields -e data.data -e http.data > out.txt

위 처럼 하면 tcp 데이터와 http 데이터를 숫자와 콜론이 찍힌 테스트로 떨구고 이걸 hxD에서 화일을 다시 만들어주면 되겠구나 했습니다.(여기서 2가지의 큰실수를 했습니다. 나중에 자동 툴로 파일을 뽑아낸 후 확인 할수 있었던 부분입니다)

이런 방식으로 만든 exe화일은 패킹 되어있었으며 upx로 패킹 되어있다는 것은 쉽게 알수 있었습니다.

하지만, upx -d file.exe하면, Checksum 에러가 나면서 언패킹이 수행되지 않았습니다.
여기서 생각했었던게....
1. 파일의 checksum을 맞춰줘야겠다.
2. upx의 버전을 맞춰줘야하나
였습니다.

1번은 pe explorer 툴을 써서 어렵사리 checksum의 자리를 찾아 맞춰주었습니다. peexplorer이 checksum값을 알려줍니다.(잊을수 없는...140...)
이렇게 했지만 똑같은 checksum에러가 나고....

더군다나 pe explorer이 말하는 파일 사이즈인 68096과는 사이즈 부터 달랐습니다.
(여기서 멘붕...)

나중에 알고 봤더니, http.data에서 누락되는 부분이 발생...





아래 부분을 넣어 주었습니다. 
하지만 그래도 안되는 상황 발생.... 그래서 구글링을 하던 중...
패킷분석으로 유명한 "패킷인사이드" 사이트에서 foremost라는 툴을 발견합니다.

해당 툴은 리눅스 기반툴로 리눅스서 실행했더니, infected.pcap에 있는 모든 화일을 다 떨궈줍니다(명령어: foremost -i infeceted.pcap, backtrack5 기본 탑재)
신기하게도 68096사이즈의 exe화일도 있습니다.
이제 끝났다고 생각하고 언패킹을 시도 하였지만, 같은 에러....

결국 돌고 돌아 퍼즐 5번의 아래 댓글을 읽어보았습니다...
저랑 같은 문제로 고민 하고 있는 사람이 있더군요... 파일을 제대로 떨궜지만 첵섬에러..
와중에 David(이었나)이 자기는 Network Miner를 사용했다는 군요...

바로 시도 해봤습니다. pcap화일 열고... 1초도 안걸려 file.exe 걸러냅니다.
위의 두개 화일이 동일 화일이고, 맨뒤숫자가 화일 크기를 나타냅니다.
Network miner이 떨군 화일을 확장자만 지워준 후(.exe 뒤로 octet-stream이 있음) 바로 확인 합니다.
 upx 테스트 확인 결과 된다네요...
upx 언패킹도 됐네요...

Network miner 다운 받고 5분도 안걸렸습니다. 완전 멘붕...
역시 배워야 손발이 고생안하는 거구나를 한번 더 느꼈습니다...

※ foremost보다 network miner이 더 우수한 것처럼 느껴진 문제였습니다. 하지만 패킷의 상황에 따라 다릅니다. 확실한 건, 알아야 손발이 고생하지 않는다입니다.

아 그리고 백신 켰더니 바로 file.exe지워 버리네요.ㅋ



Thursday, July 12, 2012

발로 만든 시리즈(3) BT_theharvest

백트랙의 툴 중 theharvest의 사용에 있어 패킷 내용입니다.

사실 별 내용은 없고, 해당 툴을 사용 할때 어떤 툴이 오고가는지 확인 하는 차원에서 만들었습니다.