[Samba] Samba 4 LDAP NTLM password nightly injection
Luc Lalonde
luc.lalonde at polymtl.ca
Tue Apr 9 10:25:47 MDT 2013
Ok this works:
####################################################################
#!/usr/bin/env python
import sys
sys.path.insert(0, "/usr/local/samba/lib64/python2.6/site-packages")
sys.path.insert(1, "/usr/local/samba/lib/python2.6/site-packages")
from samba import Ldb, registry
from samba.param import LoadParm
from samba.provision import provision, FILL_FULL, ProvisioningError, setsysvolacl
from samba.samba3 import passdb
from samba.samba3 import param as s3param
from samba.dcerpc import lsa, samr, security
from samba.dcerpc.security import dom_sid
from samba.credentials import Credentials
from samba import dsdb
from samba.ndr import ndr_pack
from samba import unix2nttime
# Convert Hex to Byte string
def HexToByte( hexStr ):
bytes = []
hexStr = ''.join( hexStr.split(" ") )
for i in range(0, len(hexStr), 2):
bytes.append( chr( int (hexStr[i:i+2], 16 ) ) )
return ''.join( bytes )
# Connect to samba4 backend
new_lp_ctx = s3param.get_context()
new_lp_ctx.load("/usr/local/samba/etc/smb.conf")
new_lp_ctx.set("private dir", "/usr/local/samba/private")
s4_passdb = passdb.PDB(new_lp_ctx.get("passdb backend"))
# Change testuser password
new_userdata = s4_passdb.getsampwnam("testuser")
new_userdata.nt_passwd = HexToByte("878D8014606CDA29677A44EFA1353FC7")
new_userdata.lanman_passwd = HexToByte("552902031BEDE9EFAAD3B435B51404EE")
s4_passdb.update_sam_account(new_userdata)
####################################################################
I was missing some module paths and the extra info for connecting to the LDB database... Now I just have to generalize this procedure so that I can update the passwords every night like I do with Samba3-LDAP.
Andrew, thanks for the pointers. I'm posting this in case it can help someone else.
----- Original Message -----
From: "Luc Lalonde" <luc.lalonde at polymtl.ca>
To: "Andrew Bartlett" <abartlet at samba.org>
Cc: samba at lists.samba.org
Sent: Wednesday, March 27, 2013 7:38:05 PM GMT -05:00 US/Canada Eastern
Subject: Re: [Samba] Samba 4 LDAP NTLM password nightly injection
Hello Andrew,
How would I convert the below base16 strings into raw bytes acceptable to this routine? We presently inject the NTLM passwords directly into our LDAP database for Samba3.
Also, I can't seem to figure out the argument values for 'passdb.PDB'. I tried 'ldb', 'samba_dsdb'.
Thanks for your help!
On 2013-03-27, at 6:18 PM, Andrew Bartlett <abartlet at samba.org> wrote:
> On Tue, 2013-03-26 at 11:10 -0400, Luc Lalonde wrote:
>> Hello Andrew,
>>
>> I'm finally diving into this project...
>>
>> First off, my sysadmin stuff is mostly in Perl. So my Python is rudimentary at best.
>>
>> Here we go anyway... I've looked at the 'upgrade.py' but I can't seem to figure out how to connect to the Samba4 passwd database.
>>
>> In the script I see these lines:
>>
>> #######################################################
>> # Connect to samba4 backend
>> s4_passdb = passdb.PDB(new_lp_ctx.get("passdb backend"))
>> ########################################################
>>
>> I would appreciate a hint on how to connect to the database please. Where is the 'passdb' object referenced from?
>>
>> Once that's done, from what I understand, I should be able to change the passwords directly:
>>
>> #######################################################
>> # Change foo-user password
>> admin_userdata = s4_passdb.getsampwnam("foo-user")
>> admin_userdata.nt_passwd = "878D8014606CDA29677A44EFA1353FC7"
>> admin_userdata.lanman_passwd = "552902031BEDE9EFAAD3B435B51404EE"
>> s4_passdb.update_sam_account(admin_userdata)
>> #######################################################
>
> Sort of. Those values are not base16 strings, but raw bytes, but
> otherwise that looks pretty much right at a first glance.
>
> Andrew Bartlett
>
> --
> Andrew Bartlett http://samba.org/~abartlet/
> Authentication Developer, Samba Team http://samba.org
>
>
--
To unsubscribe from this list go to the following URL and read the
instructions: https://lists.samba.org/mailman/options/samba
--
Luc Lalonde, analyste
---------------------------------------------------------------------
Département de génie informatique:
École polytechnique de Montréal
(514) 340-4711 x5049
Luc.Lalonde at polymtl.ca
---------------------------------------------------------------------
More information about the samba
mailing list